我对 FFmpeg 充满了兴趣,因此会抽时间出来找些相关资料自己学习下,最终的目标是凭借一己之力封装出一个 跨平台播放器。
Foreword
该工程是笔者 2017 年创建的,当时的打算是前几个 demo 使用 2.x 版本的 FFmepg,然后替换成 3.x 版本以此来熟悉 FFmpeg 的 API 。
但是 3 年过去了,我的目标还没实现😅😅😅说来惭愧,毕竟现在是 2020 年了,研究 2.x 版本没有实际意义了,所以 demo 将改为 3.x -> 4.x 版本。
2020 年工程将不再使用 xcconfig 配置 FFmpeg 路径,改用制作 Pod 库的,使用 CocoaPod 来管理,这样更加方便。
如果您对如何将 FFmpeg 的静态库制作成 Pod 库感兴趣,可移步这里 MRFFmpegPod。
Matt Reach's Awesome FFmpeg Study Demo
-
第 ① 天:查看编译 config,支持的协议 √
-
第 ② 天:查看音视频流信息 √
-
第 ③ 天:打造播放器核心驱动 √
-
第 ⑥ 天:将 avframe 转成 CMSampleBufferRef,使用 AVSampleBufferDisplayLayer 渲染,60fps √
-
第 ⑦ 天:使用 AudioUnit 渲染音频 √
-
第 ⑧ 天:使用 AudioQueue 渲染音频 √
-
第 ⑨ 天:将 FFmpeg 升级到 3.x 版本
后面没打勾是指对应的博客文档还没写好,demo是OK的。
Learning plan
- 第 ⑩ 天:将音视频同步,为封装播放器做准备
- 第 ⑪ 天:封装 MRMoviePlayer 播放器
Cross-platform
Fun learning
- 第 ⑥-① 天:黑白电视机雪花屏、灰色色阶图 √
Usage
克隆该仓库之后,项目并不能运行起来,因为项目依赖的 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 运行了,支持模拟器和真机!
MRFFmpeg Pod
编译好的 FFmpeg 库在这里 https://github.com/debugly/MRFFmpeg-Libs,需要的话可以单独下载使用!