Skip to content

Abrahum Link

ffmpeg使用笔记

基本命令模式

ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}

options

options功能说明可选参数
-preseth264 自带的模式选择,仅影响转码速度,不影响质量,会影响码率。ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow和placebo。默认处在medium模式 例子:-preset fast
-crfh264 影响最终视频的质量0-51的数值 我貌似见到过低于51的质量 默认是23。例子:-crf 20指定该参数后码率参数将会失效
-b码率例如:-b:a 132k即音频132kbps -b:v 1800k即视频1800kbps
-vf编辑视频分辨率-vf scale=1920:1080即缩放为1080p -vf crop=1280:720:0:0即剪辑为720p,后面是剪辑区域左上角坐标
-strict -2encoder 'acc'音频参数,不明,貌似是因为我使用的版本acc编码还在试验阶段
-threads多线程运算例子:-threads 2双线程。
-ss-t视频剪辑例子:-ss 00:00:00.00 -t 00:00:10.00剪辑为前十秒钟的视频输出。
-y自动覆盖文件略。

安装与版本更替

ffmpeg下载链接

下载合适版本。

1.解压包文件

tar -jxvf ffmpeg-*.tar.bz2 

2.进入目录

cd ffmpeg-* 

3.配置文件

配置安装时的选项命令如下:

./configure --enable-shared --prefix=/usr/local/ffmpeg 

--enable-shared表示生成动态链接库,添加后ffmpeg程序将依赖这些库,如不使用这是静态依赖,可执行文件将变大。

--prefix=/usr/loacal/ffmpeg指定了程序安装的目录。

--disable-yasm没有安装yasm时需要添加该选项保证编译时不使用yasm。

yasm使用了汇编指令,可以提高ffmpeg的编译速度。 不过我使用apt-get安装时报错,无法安装

4.编译安装

make

sudo make install

我在编译过程中出现少量报错和警告,目前未影响使用

5.路径配置

首先解决动态链接库

通过查看/etc/ld.so.conf文件,发现里面只有一句话:

include ld.so.conf.d/*.conf

表明其包含了ld.so.conf.d下所有的conf文件

所以可以在/etc/ld.so.conf.d/目录下创建新的ffmpeg.conf文件,内容为:

/usr/local/ffmpeg/lib 

之后执行ldconfig使修改生效。

解决可执行文件的直接运行

1通过在/usr/local/bin/文件夹下创建链接文件解决
2sudo ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/local/bin/
3sudo ln -s /usr/local/ffmpeg/bin/ffprobe /usr/local/bin/
4sudo ln -s /usr/local/ffmpeg/bin/ffserver /usr/local/bin

第三方编码器库

事情的起因是因为我发现版本升到3.0.2之后crf参数报错,所以才意识到h264编码器没有安装,故将解决办法记载下来,以备不时之需。

以下所有内容均以h264为例

1.下载x264工程代码

git clone git://git.videolan.org/x264.git 

或者从这里下载:x264

其他常用库:lame libogg libvorbis xvid

libvorbis 依赖于 libogg 所以必须先安装后者

2.库的安装

解包:

tar

配置:

./configure --enable-shared --enable-static 

--enable-shared动态库,会生成.so或者.a在/usr/local/lib下,来被ffmpeg调用。

编译安装:

make 

sudo make install 

3.重新编译ffmpeg

编译过程基本如前,但是在配置阶段需要加入以下参数:

--enable-gplGPL协议

--enable-libx264允许调用x264库。

4.其他注意事项

ffmpeg程序默认调用的是/usr/lib下调用库文件,可能会报错。

在/etc/ld.so.conf文件修改lib配置解决问题。