Linux ffmpeg的安装编译过程

本文详细介绍了FFmpeg的安装流程,包括下载、解压、配置、编译和安装步骤,并提供了动态链接库的复制方法以及编程示例。此外,还解释了如何在配置时禁用特定功能,并提供了相关选项的查询方式。
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文件。这在配置的时候很重要。

 


原文:http://blog.youkuaiyun.com/maopig/article/details/6586537

### Linux安装编译 FFmpeg 的方法 #### 准备工作 为了成功编译 FFmpeg,在开始之前需要确保系统已经安装了一些必要的工具和库。可以通过包管理器来完成这些软件的安装。 对于基于 Red Hat 的发行版,可以使用 `yum` 来安装基础开发环境: ```bash sudo yum groupinstall 'Development Tools' sudo yum install nasm cmake gcc gcc-c++ openssl-devel ``` 这一步骤会安装 GCC 编译器套件、NASM 汇编器以及其他必需的构建工具[^4]。 #### 下载源代码并解压缩 前往官方站点获取最新版本的 FFmpeg 压缩文件或者通过 Git 克隆仓库。这里假设选择了下载预打包好的 tarball 文件,并将其放置在一个合适的位置之后执行如下命令来进行解压操作: ```bash tar -xvzf ffmpeg-release-amd64.tar.xz cd ffmpeg-<version> ``` 如果希望获得最前沿的功能特性,则可以选择克隆 GitHub 项目中的 master 分支。 #### 配置编译选项 进入解压后的目录后运行 configure 脚本来设置编译参数。例如要创建一个支持静态链接同时也允许共享库生成的目标平台为本地系统的构建过程,可采用下面这条指令: ```bash ./configure --enable-shared --enable-static --prefix=/usr/local/ffmpeg ``` 当目标架构不是当前主机时(比如 ARM),则需指定交叉编译前缀以及相应体系结构和其他必要选项: ```bash ./configure --enable-shared --enable-static --prefix=../ffmpeg_arm64_8_30 --cross-prefix=aarch64-linux-gnu- --arch=arm64 --target-os=linux --enable-gpl --enable-ffmpeg ``` 上述命令适用于针对 arm64 架构进行跨平台编译的情况[^2]。 #### 执行实际编译流程 一旦配置完毕即可调用 Make 工具启动正式编译环节: ```bash make -j$(nproc) ``` 此过程中 `-j` 参数后面跟的是并发作业数,默认情况下等于 CPU 核心数量,这样能够加速整个编译进度。 #### 安装编译产物 待所有组件都已顺利编译完成后,便能利用超级用户权限把它们部署至先前定义的目的地路径内: ```bash sudo make install ``` 此时应该可以在 `/usr/local/ffmpeg/bin` 中找到新近制作出来的二进制文件了。 #### 解决动态链接问题 为了让其他应用程序也能识别刚安裝上去的新媒体处理引擎及其关联资源,还需要更新全局加载器缓存表单;另外一种情况是遇到缺少特定共享对象的问题,这时就需要手动编辑 `/etc/ld.so.conf.d/custom-libs.conf` 并追加一行指向 FFMPEG 库所在位置的内容,最后记得再次调用 ldconfig 刷新变更记录: ```bash echo "/usr/local/ffmpeg/lib" | sudo tee /etc/ld.so.conf.d/custom-libs.conf sudo ldconfig ``` 以上措施有助于防止诸如 “error while loading shared libraries: libiconv.so.2: cannot open shared object file” 这样的报错提示出现[^3]。 #### 测试编译成果 编写简单的 C 程序用于验证集成效果是否良好,保存成名为 `ffmpegtest.c` 的文本档后再依照下列方式建立最终可执行体: ```c // ffmpegtest.c 示例代码省略... ``` 接着运用 glibc 和 FFMPEG 提供的各种 API 接口实现预期功能逻辑,随后按照以下步骤完成连接阶段的工作: ```bash gcc -o ffmpegtest ffmpegtest.c -I/usr/local/ffmpeg/include -L/usr/local/ffmpeg/lib -lavformat -lavcodec -lavutil ``` 至此即完成了在 Linux 发行版之上从零起步搭建起一套完整的多媒体框架解决方案的过程概述[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值