我对 FFmpeg 充满了兴趣,因此会抽时间出来找些相关资料自己学习下,最终的目标是凭借一己之力封装出一个 跨平台播放器。
该工程是笔者 2017 年创建的,当时的打算是前几个 demo 使用 2.x 版本的 FFmepg,然后替换成 3.x 版本以此来熟悉 FFmpeg 的 API 。
但是 3 年过去了,我的目标还没实现😅😅😅说来惭愧,毕竟现在是 2020 年了,研究 2.x 版本没有实际意义了,所以 demo 将改为 3.x -> 4.x 版本。
2020 年工程将不再使用 xcconfig 配置 FFmpeg 路径,我将 FFmpeg 相关的库都做成了 pod 库,直接使用 CocoaPod 来集成,这样做更加方便也更加现代化,减少在工程配置方面浪费不必要的时间。
制作好的 FFmpeg Pod 库放在这里 MRFFToolChainPod ,简单的说就是为编译好的静态库编写了配套的 podspec 文件,感兴趣的话可以看下。
如果您对如何编译 FFmpeg 工具库感兴趣,可移步这里 MRFFToolChainBuildShell 查看具体的编译脚本。
-
第 ① 天:查看编译 config,支持的协议 √
-
第 ② 天:查看音视频流信息 √
-
第 ③ 天:打造播放器核心驱动 √
-
第 ⑥ 天:将 avframe 转成 CMSampleBufferRef,使用 AVSampleBufferDisplayLayer 渲染,60fps √
-
第 ⑦ 天:使用 AudioUnit 渲染音频 √
-
第 ⑧ 天:使用 AudioQueue 渲染音频 √
-
第 ⑨ 天:将 FFmpeg 升级到 3.x 版本
后面没打勾是指对应的博客文档还没写好,demo是OK的。
- 第 ⑩ 天:将音视频同步,为封装播放器做准备
- 第 ⑪ 天:封装 MRMoviePlayer 播放器
- 第 ⑥-① 天:黑白电视机雪花屏、灰色色阶图 √
克隆该仓库之后,项目并不能运行起来,因为项目依赖的 FFmpeg 库还没有下载下来,需要执行
pod install
----------------------------------------
Target:FFmpeg001 will use FFmpeg:3.4.7
----------------
Target:FFmpeg002 will use FFmpeg:3.4.7
----------------
Target:FFmpeg003 will use FFmpeg:3.4.7
----------------
Target:FFmpeg004 will use FFmpeg:3.4.7
----------------
Target:FFmpeg005 will use FFmpeg:3.4.7
----------------
Target:FFmpeg006 will use FFmpeg:3.4.7
----------------
Target:FFmpeg006-1 will use FFmpeg:3.4.7
----------------
Target:FFmpeg007 will use FFmpeg:3.4.7
----------------
Target:FFmpeg008 will use FFmpeg:3.4.7
----------------
Target:FFmpeg009 will use FFmpeg:3.4.7
----------------------------------------
Analyzing dependencies
Downloading dependencies
Generating Pods project
Integrating client projects
Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.
成功安装后就可以打开 StudyFFmpeg.xcworkspace 运行了,支持模拟器和真机!
由于 Github 在国内不稳定,pod install 的过程需要将 FFmpeg 几十兆的库下载下来,安装过程中如有失败属于正常现象,请多次几次,或者通过配置 HOST,翻墙等办法解决。
Good Luck!Welcome give me an issue or a star or pull request!
Thank you!