源码编译ffmpeg
Mar 21, 2024
使用ffmpeg把非原始格式的内容输入videoloopback设备时发生如下错误
1 | V4L2 output device supports only a single raw video stream |
查看github issue发现原因为debian包管理器自带的ffmpeg版本太低,不支持把非原始格式的内容输入videoloopback设备,需要重新编译高版本ffmpeg,具体可以参考官方ubuntu编译文档。
下载源码
1 | mkdir -p ~/ffmpeg_sources ~/bin |
安装第三方库
ffmpeg在编译时可以选择是否包含某些额外功能,这些额外功能需要安装特定的第三方库
nasm
1 | sudo apt-get install nasm |
需要版本大于2.13,包管理器下载的版本为2.15
libx264
1 | sudo apt-get install libx264-dev |
需要版本大于118,包管理器下载的版本为160
在编译时需要开启 --enable-gpl --enable-libx264
选项
libvpx
1 | sudo apt-get install libvpx-dev |
需要版本大于1.4.0 ,包管理器下载的版本为1.9.0
在编译时需要开启--enable-libvpx
选项
libfdk-aac
1 | sudo apt-get install libfdk-aac-dev |
无版本要求
编译时需开启 --enable-libfdk-aac --enable-nonfree
选项
libdav1d
1 | sudo apt-get install libdav1d-dev |
无版本要求
编译时需开启--enable-libdav1d
选项
编译ffmpeg
安装依赖项
1 | sudo apt -y install \ |
开始编译
1 | ./configure \ |
此时可以直接在终端中输入ffmpeg、ffplay进行使用
1 | ffmpeg -version |
但是发现在终端上输入以上命令仍然是老版本,需要指定ffmpeg、ffplay执行文件才行
1 | ~/bin/ffmpeg -version |
卸载ffmpeg
1 | rm -rf ~/ffmpeg_build ~/bin/{ffmpeg,ffprobe,ffplay,x264,x265} |