适用于嵌入式arm的ffmpeg编解码

        在嵌入式arm应用开发中,经常会遇到需要处理视频的情况,这时候就需要强大的开源工具ffmpeg出马了。

        这里可以下载到各个版本的ffmpeg。

ffmpeg各版本icon-default.png?t=N7T8https://www.videohelp.com/software/ffmpeg/old-versions        现在ffmpeg更新较频繁,如果使用API开发,各个版本都有一定区别,建议查阅文档。如果只需要ffmpeg的命令行,就不用理会了,直接上最新的。

        ffmpeg官方网站上资料也很多,可查看。

ffmpeg官方icon-default.png?t=N7T8http://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解码。

你可能感兴趣的:(嵌入式,Linux,arm开发,ffmpeg)