Blog
Blog copied to clipboard
FFmpeg编译记录
最近开始学习音视频方面的技术。音视频处理用的最多的就是FFmpeg。 这里把编译FFmpeg中遇到的一些问题记录下来,以便下次需要编译的时候方便回顾。
下载代码
FFmpeg可以直接通过git下载最新的代码,下载完成后建议切换到最新的release分支
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
我下载的时候最新的是4.1版本。
编译
由于我也是第一次编译,所以就使用了最简单的配置方法
./configure --enable-shared --disable-x86asm --prefix=/usr/local --enable-gpl --enable-libx264 --enable-libfreetype
~直接安装在/usr/local目录下,可以避免很多编译链接问题。~
系统里面/usr/lib/x86_64-linux-gnu/已经有较老的ffmpeg库了,这个和新的库会不会有冲突?
ldconfig -p | grep "avformat" #可以搜索某个库的路径
pkg-config --CFLAGS --libs libavformat #可以输出库的头文件和库所在位置
需要注意的是输入sudo ldconfig
虽然更新了库,但这个只对进程运行时有用,即可以让应用程序运行时找到动态库,而对编译时找不到库是没有作用的。
pkg-config
可以方便编译时链接和找到头文件。
可以看到,FFmpeg编译还是很简单的,需要什么模块直接enable就可以了,当然如果configure后面什么都不跟,FFmpeg也有一个默认的配置。以后如果缺少什么,可能还需要重新编译。
遇到问题
编译中如果提示找不到什么库之类,只要根据提示apt-install 即可,或者网上搜下还是很容易解决的。 但我编译出来没有ffplay,还是把我折腾了一会,找资料说,可以在配置的时候加--enable-sdl,发现原来没有sdl2库。ffplay比较新的版本都是使用sdl2.0来渲染了,以前的版本使用的sdl1.0。既然版本不对,那就重新安装即可。 ERROR: libx264 not found
sudo apt-get install libx264-dev
sudo apt-get autoremove libsdl1.2-dev
sudo apt-get install libsdl2.0-dev
然后执行
make -j8
sudo make install
~编译完成后,为了用户在各个目录都能使用可以创建软链接。~
sudo ln -s /usr/local/ffmpeg/bin/ffprobe ffprobe
sudo ln -s /usr/local/ffmpeg/bin/ffmpeg ffmpeg
sudo ln -s /usr/local/ffmpeg/bin/ffplay ffplay
但是在命令行输入ffplay后,发现缺少相应的库,还需要让系统知道ffmpeg的库在哪。
sudo vim /etc/ld.so.conf
# 添加
/usr/local/ffmpeg/lib/
sudo ldconfig
再次运行发现ffmpeg可以使用了。 如果需要看某个库是否编进了ffmpeg 可以通过ldd查看,比如
ldd ffmpeg | grep "264"
参考资料
https://blog.csdn.net/zhangwu1241/article/details/52354604 https://www.cnblogs.com/wanggang123/p/8783816.html