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* 版本都匹配,说明共享库也被正确加载了(不是静态链接)

相关推荐
阿洛学长2 小时前
VMware安装虚拟机教程(超详细)
java·linux·开发语言
YOU OU2 小时前
Linux基本使用和程序部署
linux·运维·服务器
fred_kang2 小时前
如何找到 Linux 服务器上某个 URL 路径对应的实际部署位置
linux·运维·服务器
用户2367829801682 小时前
Linux iptables 深度解析:从规则匹配到 NAT 转发实战
linux
向宇it3 小时前
【AI视频】生成AI短剧、漫剧
人工智能·ai·音视频·动画·ai视频·短剧
CairBin3 小时前
SideSail——Ubuntu 26.04(GNOME 50)侧边栏插件,支持设备信息剪贴板和米家设备简单控制
linux·ubuntu
howard20053 小时前
3.4 Linux目录操作
linux·目录操作
Volunteer Technology3 小时前
Flink的DataStream分区操作
大数据·linux·flink
爱讲故事的4 小时前
操作系统第四讲:OS Interfaces and Syscalls(操作系统接口与系统调用)
linux·windows·ubuntu