imx6ull开发板 移植 ffmpeg 4.2.11 + x264 视频编码库

因为虚拟机的交叉编译器是 Linaro GCC 4.9.4,编译不了新版的 ffmpeg(4.3+ 需要 C11,5.0+ 需要 C17)

所以,FFmpeg 版本:选择下载 ffmpeg 4.2.11,在虚拟机编译 动态库版 FFmpeg,移植到开发板。

FFmpeg 是一个多媒体框架,本身支持各种编解码器,但它不自带 x264 的 H.264 编码实现(出于

专利和 GPL 许可考虑)。

x264 是开源的 H.264(也叫 AVC)视频编码库。

如果希望 FFmpeg 能够生成 H.264 视频(例如做视频推流、录像),就必须让它链接 x264,所以,需要先编译 x264 并提供给 FFmpeg。

第一步:编译 x264

  1. 下载 x264 源码

git clone --branch stable https://code.videolan.org/videolan/x264.git

  1. 进入目录: cd x264

x264 配置交叉编译:

下面的路径 /home/leo/linux_c/tool/ffmpeg-4.2.11-install-arm 根据自己的实际安装路径修改

命令行输入下面的命令,按回车

复制代码
./configure \
 --host=arm-linux \
 --cross-prefix=arm-linux-gnueabihf- \
 --prefix=/home/leo/linux_c/tool/ffmpeg-4.2.11-install-arm \
 --enable-static \
 --disable-opencl \
 --disable-cli \
 --enable-pic
  1. 编译安装

make -j4

make install

第二步:编译 ffmpeg

  1. 下载 ffmpeg 4.2.11

wget https://ffmpeg.org/releases/ffmpeg-4.2.11.tar.xz

  1. 解压:

tar xf ffmpeg-4.2.11.tar.xz

3.进入目录

cd ffmpeg-4.2.11

ffmpeg 4.2.11 配置交叉编译:

下面的4个路径 /home/leo/linux_c/tool/ffmpeg-4.2.11-install-arm 根据自己的实际安装路径修改

命令行输入下面的命令,按回车

export PKG_CONFIG_PATH=/home/leo/linux_c/tool/ffmpeg-4.2.11-install-arm/lib/pkgconfig:$PKG_CONFIG_PATH

然后,命令行输入下面的命令,按回车

复制代码
./configure \
    --enable-cross-compile \
    --arch=arm \
    --cpu=cortex-a7 \
    --target-os=linux \
    --cross-prefix=arm-linux-gnueabihf- \
    --enable-gpl \
    --enable-libx264 \
    --extra-cflags="-I/home/leo/linux_c/tool/ffmpeg-4.2.11-install-arm/include" \
    --extra-ldflags="-L/home/leo/linux_c/tool/ffmpeg-4.2.11-install-arm/lib" \
    --enable-avdevice \
    --enable-indev=v4l2 \
    --enable-muxer=mpegts \
    --enable-muxer=rtp \
    --enable-protocol=udp \
    --enable-protocol=rtp \
    --disable-doc \
    --disable-ffplay \
    --disable-ffprobe \
    --disable-debug \
    --enable-shared \
    --disable-static \
    --prefix=/home/leo/linux_c/tool/ffmpeg-4.2.11-install-arm
  1. 编译安装

make -j4

make install

进入自己的ffmpeg安装目录,查看,然后移植到开发板

|----------------------|------------------------------------|-------------------|
| 源目录 (虚拟机) | 目标目录 (开发板) | 说明 |
| bin/ffmpeg | /usr/local/bin/ 或 /opt/ffmpeg/bin/ | 主程序 |
| lib/libav*.so* | /usr/local/lib/ 或 /opt/ffmpeg/lib/ | FFmpeg 核心动态库及符号链接 |
| lib/libsw*.so* | /usr/local/lib/ 或 /opt/ffmpeg/lib/ | FFmpeg 核心动态库及符号链接 |
| lib/libpostproc.so* | /usr/local/lib/ 或 /opt/ffmpeg/lib/ | 后处理动态库 |

在虚拟机 NFS 挂载的开发板根文件系统,直接拷贝到开发板的根文件系统中。

移植 ffmpe 主程序

sudo cp bin/ffmpeg /home/leo/linux/nfs/ubuntu_rootfs/usr/local/bin/ -f

移植 FFmpeg 核心动态库及符号链接

sudo cp -a lib/libav*.so* /home/leo/linux/nfs/ubuntu_rootfs/usr/local/lib/ -f

sudo cp -a lib/libsw*.so* /home/leo/linux/nfs/ubuntu_rootfs/usr/local/lib/ -f

sudo cp -a lib/libpostproc.so* /home/leo/linux/nfs/ubuntu_rootfs/usr/local/lib/ -f

赋予可执行权限(以防万一)

sudo chmod +x /home/leo/linux/nfs/ubuntu_rootfs/usr/local/bin/ffmpeg

移植完毕。

在开发板上更新动态库缓存

  1. 把 /usr/local/lib 添加到动态链接器的搜索路径里。

echo "/usr/local/lib" >> /etc/ld.so.conf

  1. 刷新动态链接库缓存,扫描 ld.so.conf 指定的路径,把所有共享库的信息缓存起来。

ldconfig

  1. 验证是否部署成功

ffmpeg -version

输出显示 FFmpeg 已经成功编译,支持 V4L2 输入、x264 编码、UDP/RTP 协议等。

显示 libav* 版本都匹配,说明共享库也被正确加载了(不是静态链接)

相关推荐
程序员老舅1 天前
啃透 I2C 驱动开发,才算入门嵌入式 Linux 内核驱动
数据结构·驱动开发·b树·内核·嵌入式·嵌入式开发·i2c
阿童木写作1 天前
跨境图片翻译工具多合一,批量图片视频字幕翻译加智能抠图
人工智能·python·音视频·语音识别
爱丶狸1 天前
Grafana_Zabbix_ImageRenderer_部署与前端操作手册
linux·前端·zabbix·grafana·kylin
k4m7v2pz1 天前
把 Bevy 0.14 游戏移植到 R36S 掌机:一场与“无窗口系统“的搏斗
linux·rust·bevy·r36s·rk3326·开源掌机
木子欢儿1 天前
Intel 架构的 MacBook Pro 运行 Linux 发热量高解决
linux·运维·服务器
会编程的土豆1 天前
Go 模板初识
linux·运维·服务器
奈斯先生Vector1 天前
把 Midjourney 二次编辑做成生产系统:customId 能力令牌、Action Graph 与 WebUI 精修工作台
数据库·人工智能·架构·aigc·音视频·midjourney
林澈在路上1 天前
2026 主流 AI 写歌 APP 全面测评|零基础原创歌曲工具选购指南
大数据·人工智能·aigc·音视频·音频
regret~1 天前
【记录】网络路由、转发与网卡隔离
linux·服务器·网络
aFakeProgramer1 天前
Linux版本兼容问题及RTA-VRTE环境配置笔记
linux·笔记