在嵌入式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表示编译后的库路径。

        如果configure报错

nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.

        需要安装yasm的汇编编译器:

sudo apt-get install yasm

3.编译:

        执行指令:sudo make && make install即可。

        这里会生成ffmpeg和ffprob二个程序。

4.运行程序:

        将生成的so库拷贝到系统目录下,执行程序即可。当然,也可以指定LD_LIBRARY_PATH路径,但是重启就无效了。一般不改动ffmpeg源码就直接搞到系统目录下。

5.ffplay

        如果是需要ffplay这个播放器程序,在configure中添加--enable-ffplay。

        然后还需要安装sdl这个库。可以自行下载源码编译,一样很轻松通过。SDL和SDL2都行。

        在configure中添加

--enable-sdl2 

--extra-cflags=-I**/include/SDL2

--extra-ldflags=-L**/lib

--extra-libs=-lSDL2

        重新编译即可。

        当然最简单的方式就是直接安装

sudo apt-get install libsdl2-dev

               因为安装在系统目录,就不需要指定--extra了,加--enable-sdl2即可,更加方便了。如果想利用SDL二次开发,还是得编译下。 

        这里的ffmpeg只具备了解码的功能,如果还需要264等编码功能,还需要安装x264库,这里就不细说了,网上很多教程。

6.ubuntu安装

        当然在桌面Linux下可以直接安装ffmpeg。

sudo apt update
sudo apt install ffmpeg

        但是此种方式一般版本较低,我用的ubuntu2204,直接安装版本还在4.3。

        对于想玩的,肯定得上新版。

        本人使用imx8测试,发现运行ffmpeg解码速度很快,CPU完全胜任1080P解码。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐