Linux ffmpeg的安装编译过程

本文详细介绍FFmpeg的下载、解压、配置、编译及安装步骤,并介绍如何通过编程方式使用FFmpeg进行音视频处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


  1、下载ffmpeg。

      在网上搜索一下,或者到官方网站下载

 

  2、解压

     tar命令解压


  3、配置

  ./configure --enable-shared --prefix=/usr/local/ffmpeg

  其中:--enable-shared 是允许其编译产生动态库,在以后的编程中要用到这个几个动态库。--prefix设置的安装目录。

  4、编译并安装

  make
  make install

  5、安装之后在/usr/local/ffmpeg会看到有三个目录

  lib 动态链接库位置
  include 编程要用到头文件
  bin 执行文件所在的目录

  6、为了以后方便编程,我们把lib中的三个链接库libavcodec.so libavformat.so libavutil.so复制到/usr/lib下。把include目录下的ffmpeg目录复制到/usr/include下。

  执行bin目录下的ffplay,可以去播放音频或者视频文件。例如播放1.mp3

  ./ffplay 1.mp3

  另外,bin目录下还有两个文件:ffmpeg和ffserver

  ffmpeg是一个很好的视频和音频的格式转化工具。网上有很多它的说明文档。如果不想生成ffserver,只要在./configure的时候加--disable-ffserver即可。

  7、编程

  如果写了一个test.c文件,要包含ffmpeg的头文件,可以这样写:

  #include

  编译:gcc -o test test.c -lavformat -lavcodec -lavtuil (前提是有第6步的操作)

  如果没有第6部的操作,则编译的时候如下:

  gcc -o test test.c -I/usr/local/ffmpeg/include -L/usr/local/ffmpeg/lib -lavformat -lavcodec -lavtuil

  编译成功之后,执行的时候还是需要动态库的支持,还是要把那三个动态库文件复制到/usr/lib或者/lib中,不然执行的时候会说找不到动态库链接。还有一个方法可以解决这个问题,就是把/usr/local/ffmpeg/lib这个目录加入到/etc/ld.so.config中,然后执行ldconfig,或者重启电脑,这样执行的时候系统就可以从/usr/local/ffmpeg/lib这个目录下去找这三个动态库文件了。

  以上的方式是采用动态库编译ffmpeg的,如果在configure的时候不加上--enable-shared的,则采用静态链接的方式,不会生成那三个动态库。同时生成的ffplay、ffmpeg的执行文件也比较的大,因为他们不需要动态库的支持,就可以执行。但是不利于再次开发,所以我采用动态链接的方式。configure中还有很多的选项,可以通过./configure --help查看,也可以直接查看configure文件。这在配置的时候很重要。

### 编译 FFmpeg 3.4 版本于 Linux 环境 #### 准备工作 为了成功编译 FFmpeg,在Ubuntu环境中需先准备好必要的依赖库。这可以通过更新包列表并安装一系列开发工具和库来完成: ```bash sudo apt-get update sudo apt-get install autoconf automake build-essential libass-dev \ libfreetype6-dev libsdl2-dev libtool libva-dev libvdpau-dev libvorbis-dev \ libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev ``` 上述命令会确保系统拥有构建FFmpeg所需的基础组件[^1]。 #### 获取 NDK 和 FFmpeg 源码 在 `/home` 目录下创建名为 `NDK` 的文件夹用于存放 Android NDK 及 FFmpeg 源代码。对于 NDK,推荐使用特定版本如 r14b 来保持兼容性;而 FFmpeg 则应获取指定的 3.4 版本源码。 ```bash mkdir ~/NDK && cd ~/NDK wget https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip unzip android-ndk-r14b-linux-x86_64.zip git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg cd ffmpeg git checkout n3.4 ``` 此过程下载了所需的 NDK 并提取至本地目录,同时也克隆了 FFmpeg Git 仓库且切换到了目标标签位置[^3]。 #### 配置与编译 配置阶段至关重要,它决定了最终生成二进制文件的功能特性。下面给出了一组适用于 ARM 架构移动设备(例如手机和平板电脑)上的交叉编译参数设置方式: ```bash export ANDROID_NDK_ROOT=~/NDK/android-ndk-r14b ./configure --prefix=$HOME/ffmpeg-android-build \ --enable-cross-compile \ --target-os=android \ --arch=arm \ --cpu=armv7-a \ --cross-prefix=$ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi- \ --extra-cflags="-Os -fpic" \ --disable-doc \ --disable-shared \ --enable-static \ --enable-gpl \ --enable-version3 \ --enable-nonfree \ --enable-libmp3lame \ --enable-libx264 \ --enable-neon make clean make -j$(nproc) make install ``` 这段脚本指定了多个选项来自定义编译行为,包括但不限于启用 NEON 支持以及禁用不必要的功能以减少体积开销。最后通过 make 命令启动实际编译流程,并利用 `-j` 参数加速多核 CPU 上的任务执行效率[^2]。 #### 结果验证 一旦编译顺利完成,则可以在 `$HOME/ffmpeg-android-build` 中找到静态链接形式下的可执行程序及其关联资源文件。此时可以尝试运行简单的测试案例来确认一切正常运作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值