写作不是考虑的记载,写作便是考虑自身。—理查德费曼
写作不仅仅是 学习的记载,还能够帮你进行体系的考虑,有许多东西,会在你写作的进程中不断被深化。甚至有些认知误区或许含糊的常识点你自己没意识到的,直到写出来了才理解。
《FFmpeg原理》的创造之路其实便是 我自己学习音视频技术的进程,我在2年前不是做音视频开发的。之前更多的是做PHP后端开发。所以对 C/C++ 并不是特别熟悉。
当我决定学习音视频的时分,我立即买了好几本高大上的书来看,例如《信息论》《数字视频编码技术原理》等等。这些书其实我在2年前是看不懂的,我硬着头皮去看了一个月,也看不懂。
后来发现,是我的学习路线错了。音视频开发,根本上使用的都是 C/C++,所以首先需求学习的是 编译、链接、调试 的基础常识,做到大多数 C/C++ 项目都能顺畅 build 起来,然后单步调试。
你得先是一位 C/C++ 工程师,然后才能成为一位 音视频 工程师。
所以在阅览了 俞甲子的《程序员的自我修养》跟 张银奎老师的《软件调试》之后,我精炼出了一章《编译链接基础常识》的内容,如下:
在把握了 C/C++ 根本的 编译链接,调试的常识之后,我们就能够去学习 FFmpeg 的 API 函数的用法了。有或许会有同学识,那 C/C++ 的语法用不必学,这个我觉得学个 50% 就行了,剩余的语法常识,你直接在实战中,在调试他人的代码中学习会更加速。
假如你一向不去实战,不去调试,不去看他人成熟的代码规划。会很简单堕入 C/C++ 的语法迷宫。
音视频开发,我个人觉得起步仍是需求结壮一点,一开始你不必去看那些 编解码算法,只需求知道 编码体系 能够压缩数据就行了。
刚开始,你只需求去学习怎样调库就完事了,音视频范畴有许多库,有十分多的结构,如下:
- Android 多媒体结构,包括 MediaPlayer,MediaCodec 等等。还有 OpenMax
- IOS,macOS 的多媒体结构 AVFoundation
- Windows 的多媒体结构,Media Foundation,DXVA
- FFmpeg,GStreamer,webrtc
在《FFmpeg原理》里面,主要就介绍 FFmpeg 这个库的根本使用,如下:
但其实,把握了 FFmpeg 库的根本使用之后,仍是不够,由于关于 FFmpeg 这个开源项目来说,除了 libavformat.so
,libavcodec.so
等等 8 个动态库之外,还有一个 ffmpeg.c
。
ffmpeg.c
是什么?
ffmpeg.c
是 ffmpeg.exe
命令行的中心代码,ffmpeg.c
也是调了 8 个动态库的 API 函数来完结自身功用的。可是 ffmpeg.c
自身有 5千多行代码,这 5000 多行代码是处理各种场景的鲁棒性,pts 时刻戳,各种参数设置的。
ffmpeg 开发最难搞的便是各种参数的设置,假如你自己调 API 完结功用,肯定会遇到某些参数设置错了,某些参数漏了没设置等等,问题。
而 ffmpeg.c
把这些细节问题统统帮你解决了。
所以在学习了 FFmpeg API 函数的根本使用,根本的 解复用 ➔ 解码 ➔ 编码 ➔ Muxer 的进程你也了解了,如下:
现在就需求去学习 ffmpeg.c
的代码,不必了解 ffmpeg.c
里面一切的细节,做到 能依据需求 二次开发 ffmpeg.c
即可,这也便是《FFmpeg原理》一书的《ffmpeg.c源码剖析》一章的内容,如下:
当你把握了 FFmpeg API 的根本用法,也能够二次开发 ffmpeg.c
之后,大部分的需求你根本都能解决了。可是还有一部分需求需求更深化常识。
例如自定义一个 Demuxer/Muxer
来完结加密播放器的功用。自定义一个 AVFilter
来完结特定的视频作用。等等,这个便是《FFmpeg原理》下册的内容,如下:
最终再共享一下我创造这本书的一些经验。
1,不要设置 Deadline
由于写作是需求创意的,创意不会由于你设置了 Deadline 就会蹦出来。相反 Deadline 会阻碍创意的产生。
当 Deadline 到期的时分,匆匆忙忙把一些章节内容完结,很简单避重就轻。
我觉得一部好的著作,它是没有完结的那一天的,由于我平常便是有创意,想到了更好的表达这个算法的描绘,我就去修改文章,或许增加内容,等等。
同时,写作能够不断训练你的文字表达能力,当你写得越多的时分,许多复杂的东西,你都能用简单的言语来叙述给他人听。
而且写作通常是需求很多阅览参考书本的,这也会使你的阅览速度大幅度进步。
最终,推荐一下我的《FFmpeg原理》VIP版,售价 79.9 元,VIP版 一共供给 以下 4 种服务。
- VIP专属章节
- 作者1对1答疑,答疑规模仅限于本书内容
- 音视频沙龙 社群
- PDF,EPUB 离线电子书(1700页)
详情请点击 FFmpeg原理VIP版购买 查看