适用于嵌入式arm的ffmpeg编解码
现在ffmpeg更新较频繁,如果使用API开发,各个版本都有一定区别,建议查阅文档。如果只需要ffmpeg的命令行,就不用理会了,直接上最新的。在嵌入式arm应用开发中,经常会遇到需要处理视频的情况,这时候就需要强大的开源工具ffmpeg出马了。这里的ffmpeg只具备了解码的功能,如果还需要264等编码功能,还需要安装x264库,这里就不细说了,网上很多教程。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表示编译后的库路径。
如果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解码。
更多推荐
所有评论(0)