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

            如果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中添加

    1. --enable-sdl2 
    2. --extra-cflags=-I**/include/SDL2
    3. --extra-ldflags=-L**/lib
    4. --extra-libs=-lSDL2

            重新编译即可。

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

    sudo apt-get install libsdl2-dev

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

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

    6.ubuntu安装

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

    1. sudo apt update
    2. sudo apt install ffmpeg

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

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

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

  • 相关阅读:
    文件IO(IO编程)
    Ai-WB2系列模组linux开发环境搭建
    TypeScript入门
    Maven 配置指南
    【Unity实战100例】Unity万能答题系统之单选多选判断题全部通用
    机器学习(五):数据缩放
    企业云盘软件世界排行榜:提升企业文件管理效率的最佳工具
    Django框架之路由层
    Python基础(三) | Python的组合数据类型
    【C++】C/C++的区别(待补充)
  • 原文地址:https://blog.csdn.net/huntenganwei/article/details/134073394