适用于嵌入式arm的ffmpeg编解码
在嵌入式arm应用开发中,经常会遇到需要处理视频的情况,这时候就需要强大的开源工具ffmpeg出马了。
这里可以下载到各个版本的ffmpeg。
ffmpeg各版本https://www.videohelp.com/software/ffmpeg/old-versions 现在ffmpeg更新较频繁,如果使用API开发,各个版本都有一定区别,建议查阅文档。如果只需要ffmpeg的命令行,就不用理会了,直接上最新的。
ffmpeg官方网站上资料也很多,可查看。
ffmpeg官方http://ffmpeg.org/doxygen/trunk/index.html ffmpeg的编译系统做得特别好,基本兼容各类型环境,不管是x86还是arm,都可以顺利编译通过。
下面简单介绍下编译方法:
1.下载源码;
2.配置configure:
这里给一个arm交叉编译的示例
./configure --cross-prefix=aarch64-linux-gnu- --enable-cross-compile --target-os=linux --cc=aarch64-linux-gnu-gcc --arch=arm64 --prefix=install --enable-shared --disable-static --enable-nonfree --enable-ffmpeg --enable-swscale --enable-pthreads
x86上就更简单了
./configure --prefix=install --enable-shared --disable-static --enable-nonfree --enable-ffmpeg --enable-swscale --enable-pthreads
具体可以看看configure里面的注释。
--prefix表示编译后的库路径。
3.编译:
执行指令:sudo make && make install即可。
这里会生成ffmpeg和ffprob二个程序。
4.运行程序:
将生成的so库拷贝到系统目录下,执行程序即可。
如果是需要ffplay这个播放器程序,在configure中添加--enable-ffplay。
然后还需要安装sdl这个库。可以自行下载源码编译,一样很轻松通过。SDL和SDL2都行。
在configure中添加
--enable-sdl2
--extra-cflags=-I**/include/SDL2
--extra-ldflags=-L**/lib
--extra-libs=-lSDL2
重新编译即可。
这里的ffmpeg只具备了解码的功能,如果还需要264等编码功能,还需要安装x264库,这里就不细说了,网上很多教程。
本人使用imx8测试,发现运行ffmpeg解码速度很快,CPU完全胜任1080P解码。