请选择 进入手机版 | 继续访问电脑版

[LINUX] linux下ffmpeg的利用 方法详解

[复制链接]
查看89 | 回复2 | 2021-9-5 03:06:44 | 显示全部楼层 |阅读模式

格式转换 (将file.avi 转换成output.flv)

  1. #ffmpeg -i file.avi output.flv
复制代码

-i 表示输入文件

:现在 有个视频video.avi,有个音频 audio.mp3,将其合并成output.avi

两个下令 (file.avi 是中心 文件,用完可删)

  1. #ffmpeg -i video.avi -vcodec copy -an video2.avi
  2. #ffmpeg -i video2.avi -i audio.mp3 -vcodec copy -acodec copy output.avi
复制代码

-i 表示输入文件

-vcodec copy 表示 force video codec (‘copy’ to copy stream) 这个不知怎么译 ,估计是直接copy

-acodec copy 这个说的应该是音频了 跟上面一样

-an:表示 disable audio 估计是audio no 之类的缩写,表示去掉video.avi 原有的音频

方法2 好像可以直接指定两个输入文件 ,

  1. #ffmpeg -i /tmp/a.wav -i /tmp/a.avi /tmp/a.avi
复制代码

两个文件的次序 很告急

从视频里提取声音(声音与视频的分离)

  1. #ffmpeg -i 人生若只如初见.flv -vnr.mp3
复制代码

从flv 文件中提取声音并保存为mp3格式

-vn : 表示忽略视频 估计是video no 之类的缩写

#ffmpeg -i 人生若只如初见.flv -an r.flv

只留视频不留声音

-an : 表示 忽略 声音 估计是audio no 之类的缩写

从视频里提取图片( )

  1. #ffmpeg -i test.avi -y -f image2 -ss 8 -t 0.001 -s 350x240 test.jpg
  2. -ss
复制代码

第8秒处截一图

压缩mp3 文件

假如 你以为 mp3文件有点大,想变小一点那么可以通过-ab 选项改变音频的比特率 (bitrate)

  1. #ffmpeg -i input.mp3 -ab 128 output.mp3
复制代码

//这里将比特率设为128

你可以用file 下令 查看一下源文件 的信息

z.mp3: Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, Stereo

此中 的192 kbps 就是这个东西

mp3中比特率的含义是:在压缩音频文件至mp3时,由压缩软件所确定数码文件在播放时每秒传 送给播放器大小,其单位是:千位/秒;英文的含义是:kbps – = kilobits per second。现在 mp3文件的最高数位率是320 kbps。如许 的文件体积很大,每分钟的音乐超过两兆字节。假如 采用可变比特率(VBR)编码来天生 mp3文件,获得与320 kbps相称 音质,文件的体积会缩小25~50%。请注意 :播放时间类似 ,而歌曲不同,所获的压缩mp3文件的一样寻常 不类似 ,这是由于 VBR编码所天生 的 mp3文件的大小不仅仅取决于播放时间的长度,还取决于源音频文件的别的 因素。

灌音 (要有可用的麦克风,并且假如 用alsa 的话,好像得安alsa-oss,重启)

  1. #ffmpeg -f oss -i /dev/dsp out.avi
  2. #ffmpeg -f alsa -ac 2 -i hw:0,0 ut.avi
  3. #ffmpeg -f alsa -ac 2 -i pulse
复制代码

oss 是linux 下的声音相干 的东西,与alsa 一样,不过oss 是贸易 的, 而/dev/dsp 是oss 用到的麦克的装备 吧,可以如许 明确

屏幕录像

  1. #ffmpeg -f x11grab -s xga -r 10 -i :0.0+0+0 wheer.avi
  2. #ffmpeg -f x11grab -s 320x240 -r 10 -i :0.0+100+200 wheer.avi
复制代码

:0:0 表示屏幕(个人明确 ,由于 体系 变量$DISPLAY值就是:0.0) 而100,表示距左端100象素,200表示距上端200

-s 设置窗口大小

-r 10 好像是设置频率,不懂

  1. #ffmpeg -f x11grab -s xga-qscale 5-r 10 -i :0.0+0+0 wheer.avi
复制代码

-qscale 8 设定画面质量,值越小越好

屏幕录像,同时灌音

  1. #ffmpeg -f oss -i /dev/dsp-f x11grab -r 30 -s 1024x768 -i :0.0 output.mkv
  2. #ffmpeg -ac 2 -f oss -i /dev/dsp -f x11grab -r 30 -s 1024x768 -i :0.0 -acodec pcm_s16le -vcodec libx264 -vpre lossless_ultrafast -threads 0 output.mkv
复制代码

看到这,你会发现这个下令 有多强大 ,

假如 我屏幕上打开了一个窗口,我只想录这个窗口的内容,怎样 确定这个窗口的坐标位置呢

可以用别的 一个下令

xwininfo 输入这个下令 后,用鼠标点选目的 窗口,

会出现目的 窗口的坐标,宽高等一系列信息

Absolute upper-left X: 276

Absolute upper-left Y: 57

Relative upper-left X: 2

Relative upper-left Y: 23

Width: 742

Height: 499

Depth: 24

Visual: 0×21

Visual Class: TrueColor

Border width: 0

Class: InputOutput

Colormap: 0×20 (installed)

Bit Gravity State: NorthWestGravity

Window Gravity State: NorthWestGravity

Backing Store State: NotUseful

Save Under State: no

Map State: IsViewable

Override Redirect State: no

Corners: +276+57 -262+57 -262-244 +276-244

-geometry 80×24+274+34 看到这一行了没 ()

比如根据上面的信息

#ffmpeg -f oss -i /dev/dsp -f x11grab -r 30 -s 1280x752 -i :0.0+0+23 output.avi

Another thing you can change is the video frame rate (FPS). In the example above we used -r 30 which means capture at 30 FPS. You can change this value to whatever frame rate you want.

这个 -r 30 应该是每秒钟取样几次,估计是一秒截三十次屏,

切头去尾

  1. #ffmpeg -ss 00:00:10 -t 00:01:22 -i 五月天-突然好想你.mp3 output.mp3
复制代码

只要从第10秒开始截取,共截取1:22时长的内容,视频文件的毗连 ,如两个flv 文件 毗连 成一块

好像必须先将文件 转成mpg ,dv 等格式的文件后才能举行 毗连

毗连 复数的AVI影片档之范例(在此范例中须一度暂时 将AVI档转换成MPEG-1档(MPEG-1, MPEG-2 PS, DV格式亦可毗连 ))

  1. #ffmpeg -i input1.avi -sameq inputfile_01.mpg -r 20
  2. #ffmpeg -i input2.avi -sameq inputfile_02.mpg -r 20
  3. #cat inputfile_01.mpg inputfile_02.mpg > inputfile_all.mpg
  4. #ffmpeg -i inputfile_all.mpg -sameq outputfile.avi
复制代码

上面将input1.avi input2.avi 合并成outputfile.avi

-sameq 表示 类似 的质量(大概 指的是画面,不太清晰 )

-r 指频率

=====================================================================

下面是wiki 上给的几个例子

参数

FFmpeg可利用 浩繁 参数,参数内容会根据ffmpeg版本而有差异,利用 前建议先参考参数及编解码器的叙述。此外,参数明细可用 ffmpeg -h 表现 ;编解码器名称等明细可用 ffmpeg -formats 表现 。

下列为较常利用 的参数。

重要 参数

-i 设定输入档名。

-f 设定输出格式。

-y 若输出档案已存在时则覆盖档案。

-fs 超过指定的档案大小时则竣事 转换。

-ss 从指定时间开始转换。

-title 设定标题。

-timestamp 设定时间戳。

-vsync 增减Frame使影音同步。

影像参数

-b 设定影像流量,默以为 200Kbit/秒。( 单位请参照下方注意 事项 )

-r 设定FrameRate值,默以为 25。

-s 设定画面的宽与高。

-aspect 设定画面的比例。

-vn 不处理影像,于仅针对声音做处理时利用 。

-vcodec 设定影像影像编解码器,未设定时则利用 与输入档案类似 之编解码器。

声音参数

-ab 设定每Channel (迩来 的SVN 版为全部 Channel的总合)的流量。( 单位 请参照下方注意 事项 )

-ar 设定采样率。

-ac 设定声音的Channel数。

-acodec 设定声音编解码器,未设定时与影像类似 ,利用 与输入档案类似 之编解码器。

-an 不处理声音,于仅针对影像做处理时利用 。

-vol 设定音量大小,256为标准音量。(要设定成两倍音量时则输入512,依此类推。)

注意 事项

以-b及ab参数设定流量时,根据利用 的ffmpeg版本,须注意 单位会有kbits/sec与bits/sec的不同。(可用ffmpeg -h表现 阐明 来确认单位。)

比方 ,单位为bits/sec的环境 时,欲指定流量64kbps时需输入‘ -ab 64k ’;单位为kbits/sec的环境 时则需输入‘ -ab 64 ’。

以-acodec及-vcodec所指定的编解码器名称,会根据利用 的ffmpeg版本而有所不同。比方 利用 AAC编解码器时,会有输入aac 与 libfaac的环境 。此外,编解码器有分为仅供解码时利用 与仅供编码时利用 ,因此肯定 要利用 ffmpeg -formats 确 认输入的编解码器是否能运作。

范例

将MPEG-1影片转换成MPEG-4格式之范例

  1. #ffmpeg -i inputfile.mpg -f mp4 -acodec libfaac -vcodec mpeg4 -b 256k -ab 64k outputfile.mp4
复制代码

将MP3声音转换成MPEG-4格式之范例

  1. #ffmpeg -i inputfile.mp3 -f mp4 -acodec libaac -vn -ab 64k outputfile.mp4
复制代码

将DVD的VOB档转换成VideoCD格式的MPEG-1档之范例

  1. #ffmpeg -i inputfile.vob -f mpeg -acodec mp2 -vcodec mpeg1video -s 352x240 -b 1152k -ab 128k outputfile.mpg
复制代码

将AVI影片转换成H.264格式的M4V档之范例

  1. #ffmpeg -i inputfile.avi -f mp4 -acodec libfaac -vcodec libx264 -b 512k -ab 320k outputfile.m4v
复制代码

将任何影片转换成东芝REGZA可辨识的MPEG2格式之范例

  1. #ffmpeg -i inputfile -target ntsc-svcd -ab 128k -aspect 4:3 -s 720x480 outputfile.mpg
复制代码

毗连 复数的AVI影片档之范例(在此范例中须一度暂时 将AVI档转换成MPEG-1档(MPEG-1, MPEG-2 PSDV格式亦可毗连 )、

  1. #ffmpeg -i input1.avi -sameq inputfile_01.mpg
  2. #ffmpeg -i input2.avi -sameq inputfile_02.mpg
  3. #cat inputfile_01.mpg inputfile_02.mpg > inputfile_all.mpg
  4. #ffmpeg -i inputfile_all.mpg -sameq outputfile.avi
复制代码

=============================================================================

http://ffmpeg.org/ffmpeg-doc.html

http://ubuntuforums.org/showthread.php?t=1392026

同时搞明确 的一些题目

在alsa 体系中声卡(也大概 是麦克风,)叫hw:0,0 而在oss 体系中叫/dev/dsp (用词大概 不太专业) Linux在安装了声卡后,会有一些装备 文件天生 。

采集数字样本的/dev/dsp文件,针对混音器的/dev/mixer文件,用于音序器的/dev/sequencer,/dev/audio文件一个 基于兼容性思量 的声音装备 文件。只要向/dev/audio中输入wav文件就能发出声音。而对/dev/dsp文件读取就能得到WAV文件格式的声音文 件。

用ffmpeg将rmvb克制 成mp4

1、查看rmvb属性

转换之前先查看一下文件属性,将分辨率等信息看一下,假如 分辨率超过960*640就必要 调整。趁便 看一下码率,克制 成x264的时间 参考一下。

  1. ffmpeg -i 文件名
复制代码

2、克制 成mp4

1).pass1编码

  1. ffmpeg -i 01.rmvb -an -vcodec libx264 -b 560k -pass 1 -f mp4 -y NUL
复制代码

-an : 不编码音频

-vcodec : 设置视频的编码,我这里利用 的是x264

-b : 这个是码率

-f : 逼迫 利用 格式

-y : 主动 输y确认

NUL : 由于 是pass1 以是 不必要 输出文件,直接用NUL

2).pass2编码

  1. ffmpeg -i 01.rmvb -acodec copy -vcodec libx264 -b 560k -pass 2 -f mp4 01.mp4
复制代码

由于 现在 很多rmvb的音频部分都是aac编码的,以是 可以直接用-acodec copy复制音频部份

3、针对某些文件的参数调整

有些rmvb或着mkv之类的分辨率比较高,以是 传到itouch必要 调整一下。在ffmpeg内里 可以用-s参数:ffmpeg -i 01.rmvb -acodec copy -vcodec libx264 -b 560k -s 960x640 -f mp4 01.mp4 

  1. ffmpeg -i 01.rmvb -acodec copy -vcodec libx264 -b 560k -s 960x640 -f mp4 01.mp4
复制代码

960x640必要 本身 计算一下,按比例举行 调整

按时间截取

  1. ffmpeg -i 01.rmvb -acodec copy -vcodec libx264 -b 560k -ss 00:00:00 -t 00:01:00 -f mp4 01.mp4
复制代码

设置B-frame对动画片有些好处,2pass的时间 不是很显着 ,1pass的比较显着 :

  1. ffmpeg -i 01.rmvb -acodec copy -vcodec libx264 -b 560k -bf 6 -f mp4 01.mp4
复制代码

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

avatar 梦太晚616 | 2021-10-7 11:28:59 | 显示全部楼层
admin楼主加油,看好你哦!
回复

使用道具 举报

avatar 标题超过5个字 | 2021-10-9 04:02:33 | 显示全部楼层
好多兽医在广场上义诊,admin楼主去看看吧!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则