iTOP-iMX6ULL 开发板-FFmpeg 移植实现视频采集
本文转自迅为i.MX6ULL开发板使用教程第九十八章
FFmpeg(Fast Forward Mpeg)是一种可以用来记录、转换数字音频、视频,并能将其转化为流的多媒体视频处理工具,拥有视频采集功能、视频格式转换、视频抓图等功能。本文档介绍如何将 ffmpeg 移植到 ARM 平台。
硬件平台:使用迅为 i.MX6ULL 开发板;USB 免驱摄像头
软件工具:交叉编译工具为arm-linux-gnueabihf;yocto Qt5文件系统。
98.1 编译 x264
获取 x264 源码,可以从网站 http://www.videolan.org/developers/x264.htm 下载,进入如图 98.1.1 界
面,点击下载;或者用我们已经下载压缩包(与文档同一目录下的 x264-master.tar.bz2);
将压缩包放到 ubuntu 并解压,tar -vxf x264-master.tar.bz2 ,创建文件夹_x264_install 用来存放编译后
生成的文件,mkdir _x264_install:
进入解压后的路径 x264-master,执行以下命令:
./configure --enable-shared --prefix=/home/ubuntu/work/ffmpeg/_x264_install/ --host=arm-linux-gnueabihf
--disable-asm
参数说明:
--prefix=/home/ubuntu/work/ffmpeg/_x264_install/ :指定编译后存放路径
--host=arm-linux-gnueabihf :指定交叉编译链,用户需要修改为自己的交叉编译器
--enable-shared :允许共享
--disable-asm:跳过汇编
修 改 配 置 文 件 config.mak , vi config.mak , 修 改 为 自 己 的 路 径 和 交 叉 编 译 工 具 ( 本 文 档 用 的
arm-linux-gnueabihf-gcc),
SYS_ARCH=ARM
SYS=LINUX
CC= arm-linux-gnueabihf-gcc
LD=arm-linux-gnueabihf-gcc -o
AR= arm-linux-gnueabihf-ar rc
RANLIB= arm-linux-gnueabihf-ranlib
执行 make,成功后如图 98.1.5:
执行 make install,成功后如图 98.1.6:
查看文件夹_x264_install,发现生成的库文件已经在此目录下:
98.2 编译 FFmpeg
FFmpeg 下载地址:http://ffmpeg.org/download.html,已经把下载好的压缩包放在了文档同一目录下。
下载后解压:tar -vxf ffmpeg-snapshot.tar.bz2 ,创建文件夹_ffmpeg_install 存放生成的文件:
进入解压后的 ffmpeg 文件夹,修改 Makefile,添加编译选项:CFLAGS += -fPIC,
配置编译选项,执行以下命令:
./configure
--cross-prefix=arm-linux-gnueabihf-
--enable-cross-compile
--target-os=linux
--cc=arm-linux-gnueabihf-gcc --arch=arm --prefix=/home/ubuntu/work/ffmpeg/_ffmpeg_install --enable-shared
--disable-static
--enable-gpl
--enable-nonfree
--disable-ffplay
--enable-swscale
--enable-pthreads
--disable-armv5te --disable-armv6 --disable-armv6t2 --disable-x86asm
--disable-stripping --enable-libx264
--extra-cflags=-I/home/ubuntu/work/ffmpeg/_x264_install/include
--extra-ldflags=-L/home/ubuntu/work/ffmpeg/_x264_install/lib --extra-libs=-ldl
参数说明:
--cross-prefix=arm-linux-gnueabihf-:配置为自己的交叉编译工具
--cc=arm-linux-gnueabihf-gcc:配置为自己的交叉编译工具
--arch=arm --prefix=/home/ubuntu/work/ffmpeg/_ffmpeg_install:
--extra-cflags=-I/home/ubuntu/work/ffmpeg/_x264_install/include :改为
--extra-ldflags=-L/home/ubuntu/work/ffmpeg/_x264_install/lib :
配置成功后如图 98.2.6:
执行 make 开始编译,完成后如图 98.2.7:
执行 make install,成功后生成的文件在我们创建好的_ffmpeg_install 目录下:
98.3 移植到 ARM 开发板
将_x264_install 下的库文件拷贝到开发板的/lib/目录下, cp *x264* /lib/;
将_ffmpeg_install/lib 下的 so 库文件全部拷贝到开发板的/lib/目录下,如有警告可忽略;
将_ffmpeg_install/bin/目录下的 ffmpeg 拷贝到开发板的/bin/目录下:
98.4 测试
插上 USB 免驱摄像头,设备节点为/dev/video2,在开发板终端执行以下命令:
ffmpeg -f video4linux2 -s 320x240 -i /dev/video2 /mnt/topeet.avi
会出现如下所示:
开发板的/mnt/目录下会出现 topeet.avi 文件,
将此文件拷贝到 windows 上,用视频播放设备打开:
能看到录像说明移植成功。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人