11[ ![ license] ( https://img.shields.io/badge/license-BSD--3--Clause-blue.svg )] ( https://img.shields.io/badge/license-BSD--3--Clause-blue.svg )
22
3- 我在找一个教程/书来教我如何使用 [ FFmpeg] ( https://www.ffmpeg.org/ ) 作为 lib 来使用,然后我找到了一个 [ "如何1k行代码写一个播放器"] ( http://dranger.com/ffmpeg/ ) 的教程。
3+ # 介绍
4+
5+ 我在找一个教程/书来教我如何使用 [ FFmpeg] ( https://www.ffmpeg.org/ ) 的 lib 库,然后我找到了一个 [ "如何1k行代码写一个播放器"] ( http://dranger.com/ffmpeg/ ) 的教程。
46
5- 不幸运的是这个项目已经不维护了,所以我才决定写着个教程 。
7+ 不巧的是这个项目已经不维护了,所以我才决定写这个教程 。
68
7- 这里大部分的代码都是c写的 ,** 但是不用担心** :你可以非常容易的理解并将它作为你的首选语言 。
9+ 这里大部分的代码都是 c 写的 ,** 但是不用担心** :你可以非常容易的理解它 。
810
9- FFmpep libav 有很多语言的版本,比如 [ python] ( https://mikeboers.github.io/PyAV/ ) , [ go] ( https://github.com/imkira/go-libav ) ,即时你对这些语言不熟。比仍然可以通过 ffi 来支持它(这是一个[ Lua] ( https://github.com/daurnimator/ffmpeg-lua-ffi/blob/master/init.lua ) 的例子)。
11+ FFmpep libav 有很多语言的版本,比如 [ python] ( https://mikeboers.github.io/PyAV/ ) , [ go] ( https://github.com/imkira/go-libav ) ,即时你对这些语言不熟悉,你仍然可以通过 ffi 来支持它(这是一个[ Lua] ( https://github.com/daurnimator/ffmpeg-lua-ffi/blob/master/init.lua ) 的例子)。
1012
11- 我将快速的教会大家认识什么是视频 、音频、编解码和容器,然后我们将会去使用FFmpeg命令行,并且最终用代码实现。随时可以跳过这个部分 [ 艰难的学习FFmpeg] ( #learn-ffmpeg-libav-the-hard-way ) 。
13+ 我将会快速的教会大家认识什么是视频 、音频、编解码和容器,然后我们尝试使用FFmpeg命令行,最终用代码实现这些功能。当然你可以随时跳过这个部分 [ 艰难的学习FFmpeg] (#艰难的学习 FFmpeg )。
1214
1315很多人都说相比较传统的TV,视频是互联网的未来,所以FFmpeg是值得学习的。
1416
1517__ 目录__
1618
17- * [ 介绍] ( #intro )
18- * [ 视频 - 你可以看见什么!] ( #video ---what-you-see )
19- * [ 音频 - 你可以听见什么!] ( #audio ---what-you-listen )
20- * [ 编码 - 压缩数据] ( #codec ---shrinking-data )
21- * [ 容器 - 整合音频和视频的地方] ( #container ---a-comfy-place-for-audio-and-video )
22- * [ FFmpeg - 命令行] ( #ffmpeg ---command-line )
23- * [ FFmpeg 命令行工具 101] ( #ffmpeg-command-line-tool -101 )
24- * [ 通用的视频操作] ( #common-video-operations )
25- * [ 转码] ( #transcoding )
26- * [ 转封装] ( #transmuxing )
27- * [ 转码率] ( #trvansrating )
28- * [ 转分辨率] ( #transsizing )
29- * [ 自适应流] ( #bonus-round-adaptive-streaming )
30- * [ 超越] ( #going-beyond )
31- * [ 艰难的学习 FFmpeg] ( #learn-ffmpeg-libav-the-hard-way )
32- * [ 章节 0 - 著名的hello world] ( #chapter-0---the-infamous-hello -world )
33- * [ FFmpeg libav 架构] ( #ffmpeg -libav-architecture )
34- * [ 章节1 - 时间线 ] ( #chapter-1---syncing-audio-and-video )
35- * [ 章节 2 - 重新封装] ( #chapter-2---remuxing )
36- * [ 章节 3 - 转码] ( #chapter-3---transcoding )
19+ * [ 介绍] ( #介绍 )
20+ * [ 视频 - 你可以看见什么!] ( #视频 ---你可以看见什么 )
21+ * [ 音频 - 你可以听见什么!] ( #音频 ---你可以听见什么 )
22+ * [ 编码 - 压缩数据] ( #编码 ---压缩数据 )
23+ * [ 容器 - 整合音频和视频的地方] ( #容器 ---整合音视频的地方 )
24+ * [ FFmpeg - 命令行] ( #FFmpeg ---命令行 )
25+ * [ FFmpeg 命令行工具 101] ( #FFmpeg-命令行工具 -101 )
26+ * [ 通用的视频操作] ( #通用的视频操作 )
27+ * [ 转码] ( #转码 )
28+ * [ 转封装] ( #转封装 )
29+ * [ 转码率] ( #转码率 )
30+ * [ 转分辨率] ( #转分辨率 )
31+ * [ 自适应流] ( #自适应流 )
32+ * [ 超越] ( #超越 )
33+ * [ 艰难的学习 FFmpeg] ( #艰难的学习-FFmpeg )
34+ * [ 章节0 - 著名的hello world] ( #章节0---著名的hello -world )
35+ * [ FFmpeg libav 架构] ( #FFmpeg -libav-架构 )
36+ * [ 章节1 - 同步音频和视频 ] ( #章节1---同步音频和视频 )
37+ * [ 章节2 - 重新封装] ( #章节2---重新封装 )
38+ * [ 章节3 - 转码] ( #章节3---转码 )
3739
3840# 介绍
3941
@@ -258,7 +260,7 @@ PS: 我拿了一个例子 [播放自适应 WebM 的说明](http://wiki.webmproje
258260
259261我使用 FFmpeg 结合 iMovie 为 YouTube 编辑视频,其实你也可以更专业的用它。
260262
261- # 学习FFmpeg的困难
263+ # 艰难的学习 FFmpeg
262264
263265> Don't you wonder sometimes 'bout sound and vision?
264266> ** David Robert Jones**
@@ -269,7 +271,7 @@ FFmpeg 有几个[lib库](https://link.zhihu.com/?target=https%3A//www.ffmpeg.org
269271
270272> 这个标题是对 Zed Shaw 的一系列丛书[ 学习X的困难] ( https://learncodethehardway.org/ ) ,特别是学习C语言困难。
271273
272- ## 章节 - 大名鼎鼎的 hello world
274+ ## 章节 - 著名的 hello world
273275
274276这里说的 hello world 实际上不会在终端里输出 “hello world” :tongue :
275277
@@ -967,4 +969,4 @@ We converted the media stream from `h264` to `h265`, as expected the `h265` vers
967969 //sp.output_extension = ".webm";
968970```
969971
970- > 现在,说实话,[这比我想象中的难](https://link.zhihu.com/?target=https%3A//github.com/leandromoreira/ffmpeg-libav-tutorial/pull/54),我必须深入理解 [FFmpeg 命令行源码](https://link.zhihu.com/?target=https%3A//github.com/leandromoreira/ffmpeg-libav-tutorial/pull/54%23issuecomment-570746749),并且做很多测试,我想我肯定搞错了一些细节,因为我为 h264 强制 `force-cfr` 才能工作,并且仍然能看见一些` warning 信息(强制帧类型(5)为真类型(3))`。
972+ > 现在,说实话,[这比我想象中的难](https://link.zhihu.com/?target=https%3A//github.com/leandromoreira/ffmpeg-libav-tutorial/pull/54),我必须深入理解 [FFmpeg 命令行源码](https://link.zhihu.com/?target=https%3A//github.com/leandromoreira/ffmpeg-libav-tutorial/pull/54%23issuecomment-570746749),并且做很多测试,我想我肯定搞错了一些细节,因为我为 h264 强制 `force-cfr` 才能工作,并且仍然能看见一些` warning 信息(强制帧类型(5)为真类型(3))`。
0 commit comments