音视频开发

FFmpeg介绍以及编译

2020-09-04  本文已影响0人  zhonglaoban

音视频开发,首先不得不提到FFmpeg。该框架为开发者们提供了非常大的帮助,它是一套可以用来采集、处理、编码、传输的开源框架。可以用在各种PC端(Linux、Windows、macOS)和移动端(iOS、Android)等平台。本节会从编译开始,介绍一下FFmpeg的框架,以及在iOS平台上的使用。

FFmpeg编译选项

我们可以到FFmpeg官网下载稳定版本的源码(一般来说4.3的版本比4.3.1的版本稳定)。然后将下载的源码解压,FFmpeg与大部分GNU软件的编译方式类似,都是通过configure脚本来实现编译前定制的,这种方式可以让用户在编译前对软件进行裁剪,同时通过对运行系统以及目标平台的指定,实现满足需求的最小包体积编译。我们可以利用help命令来查看它有哪些编译选项。

./configure -help
  1. 标准选项:GNU软件配置项,例如安装路径、-- prefix=...等。
  2. 专利使用协议选项:一些开源协议。
  3. 编译、链接选项:生成静态库还是动态库这些。
  4. 可执行程序选项:决定是否生成FFmpeg、ffplay、ffprobe 和ffserver等。
  5. 文档选项:文档的类型。
  6. 模块选项:需要开启或者关闭里面哪些模块。
  7. Toolchain选项:CPU架构、交叉编译,操作系统。C、C++的一些配置等。
  8. 其他:一些其他深度定制编译选项。

FFmpeg结构

默认的编译会生成4个可执行文件和8个静态库。可执行文件分别是用于转码、裁剪文件的ffmpeg、用于播放媒体文件的ffplay、用于获取文件信息的ffprobe、以及作为简单流媒体服务器的ffserver。8个静态库就是FFmpeg的8个模块,具体包括以下内容:

iOS平台的编译

对于iOS平台来说,需要在configure的时候加入以下内容:

 ./configure \
--target-os=darwin \
--arch="arm64" \
--cc="xcrun -sdk iphoneos clang" \
--extra-cflags="-arch arm64 -mios-version-min=8.0 -Ixx" \
--extra-ldflags="-arch arm64 -mios-version-min=8.0 -Lxx" \

这里推荐一个编译脚本FFmpeg-iOS-build-scriptt,它可以帮我下载指定的FFmpeg版本,选择编译的平台,配置链接的第三方库,非常好用。

在macOS上安装FFmpeg命令行工具

brew install ffmpeg

如果安装好没有ffplay工具,那么在安装时加上--with-ffplay就有了。

brew install ffmpeg --with-ffplay
上一篇下一篇

猜你喜欢

热点阅读