ARM移植FFMPEG libx264

该文详细介绍了如何在ARM架构的Linux系统上编译FFmpeg,包括FFmpeg的基本功能,如视频采集、格式转换等。首先,由于FFmpeg已经包含H.264解码器但缺少编码器,因此需要编译libx264库。通过下载x264源码并进行交叉编译,然后配置和安装。接着,编译FFmpeg源码,启用跨平台编译并链接x264库。最后,给出了使用FFmpeg进行视频捕获的示例命令。
摘要由CSDN通过智能技术生成

1、ffmpeg简介
ffmpeg(Fast Forward Mpeg)的介绍可以参考[ffmpeg - 百度百科],里面有比较全面以及专业的描述,主要功能大约可以总结为以下几点:

视频采集/屏幕录制
视频格式转换
视频截图
视频加水印等

2、编译
ffmpeg中已有H.264的解码,但没有编码,所以需要先编译libx264,它是自由的H.264编码库,是x264项目的一部分。

2.1 编译x264
源码下载:http://download.videolan.org/pub/videolan/x264/snapshots/

编译步骤:

tar xjvf x264-snapshot-20180619-2245-stable.tar.bz2
cd x264-snapshot-20180619-2245-stable/
./configure --host=aarch64-linux-gnu --prefix=$PWD/tmp --enable-shared --disable-asm
vi config.mak     # 修改内容以支持交叉编译
    CC=aarch64-linux-gnu-gcc
    LD=aarch64-linux-gnu-gcc -o
    AR=aarch64-linux-gnu-gcc-ar rc
    RANLIB=aarch64-linux-gnu-gcc-ranlib
    STRIP=aarch64-linux-gnu-strip
make && make install
tree tmp/      # 生成了bin/include/lib三个文件夹及其内容
    tmp/
    ├── bin
    │   └── x264
    ├── include
    │   ├── x264_config.h
    │   └── x264.h
    └── lib
        ├── libx264.so -> libx264.so.152
        ├── libx264.so.152
        └── pkgconfig
            └── x264.pc

22
2.2 编译ffmpeg
源码下载:http://ffmpeg.org/releases/

编译步骤:

tar xjvf ffmpeg-3.4.5.tar.bz2
cd ffmpeg-3.4.5/
./configure --enable-cross-compile --cross-prefix=aarch64-linux-gnu- \
    --arch=arm64 --target-os=linux --cc=aarch64-linux-gnu-gcc --prefix=$PWD/tmp \
    --enable-shared --enable-pic --disable-static --enable-gpl --enable-nonfree \
    --enable-pthreads --enable-ffmpeg --enable-ffplay --enable-ffserver --enable-swscale  \
    --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-stripping \
    --enable-libx264 --extra-cflags=-I$PWD/../x264-snapshot-20191213-2245-stable/tmp/include \
    --extra-ldflags=-L$PWD/../x264-snapshot-20191213-2245-stable/tmp/lib
make && make install
ls -l tmp/    # 生成了bin/include/lib/share四个文件夹及其内容
1
2
3
4
5
6
7
8
9
10
11
./configure参数说明可以参考:https://www.cnblogs.com/azraelly/archive/2012/12/31/2840541.html

注:./configure时提示“arm-linux-xxx-pkg-config not found”不影响后续使用。


3、使用示例
本例使用了USB摄像头作为测试,支持640x480、320x240多种分辨率,在系统中的节点为/dev/video0,则使用320x240分辨率的测试命令如下:

ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 /mnt/test.avi
1

参考文章:

在ARM-Linux下移植FFMPEG – CSDN
成功在mini2440上移植ffmpeg – CSDN
ffmpeg 移植到arm 编译笔记 – CSDN
————————————————

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ffmpeg交叉编译移植是将ffmpeg库从一个平台编译并移植到另一个平台的过程。这个过程可以让我们在目标平台上运行ffmpeg库,并使用其功能。 要进行ffmpeg交叉编译移植,可以按照以下步骤进行操作: 1. 确定目标平台和编译环境。 在交叉编译移植之前,需要确定目标平台的操作系统和架构,并准备好相应的编译环境。例如,如果目标平台是ARM架构的嵌入式设备,需要安装适用于ARM平台的交叉编译工具链。 2. 获取ffmpeg源代码。 可以从FFmpeg的官方GitHub存储库中获取ffmpeg的源代码。使用git clone命令或直接下载源代码压缩包来获取代码。 3. 配置编译选项。 进入ffmpeg源代码目录,并使用configure命令来配置编译选项。根据目标平台和需求,选择适当的选项进行配置。可以参考FFmpeg的官方文档或者之前成功移植的经验来确定合适的选项。 4. 进行交叉编译。 在完成配置后,使用make命令进行交叉编译。根据编译环境的不同,可能需要使用特定的编译选项或命令来进行交叉编译。可以参考之前成功移植的经验或相关的教程来进行操作。 5. 测试和调试。 在编译完成后,将生成的ffmpeg移植到目标平台上,并进行测试和调试。可以使用一些示例代码或自己编写的代码来测试ffmpeg库的功能和性能。 请注意,由于不同的平台和需求,ffmpeg的交叉编译移植可能会有一些特定的问题和挑战。在遇到问题时,可以参考相关的文档、教程和社区讨论来获取帮助和解决方案。引用提供了一些关于在Windows平台上编译带有libx264libmp3lame的FFmpeg库的详细步骤,可以参考这些资源来获取更具体的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值