前言 近些年来,随着5G网络技术的迅猛发展,FFmpeg音视频及流媒体直播应用越来越普及,音视频流媒体方面的开发岗位也非常多,然而,市面上没有一本通俗易懂的系统完整的FFmpeg SDK二次开发及直播美颜的入门图书。网络上的知识虽然不少,但是太散乱,不适合读者入门。 众所周知,FFmpeg命令行应用起来简单,但SDK二次开发相对比较难以理解。很多程序员想从事音视频或流媒体开发,但始终糊里糊涂、不得入门。笔者刚毕业时,也是纯读者一个,付出了艰苦的努力,终于有一些收获。借此机会,整理成专业书籍,希望给读者带来帮助,少走弯路。 FFmpeg发展迅猛,功能强大,命令行也很简单、很实用,但是有一个现象: 即便使用命令行做出了一些特效,但依然不理解原理,不知道具体的参数是什么含义。音视频与流媒体是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学基础理论,而是直接做项目、看源码,但往往在看到C/C++的代码时一头雾水,不知道代码到底是什么意思。这是因为没有学习音视频和流媒体的基础理论,就像学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂,所以一定要认真学习基础理论,然后学习播放器、转码器、非编、流媒体直播、视频监控等。 阅读建议 本书是FFmpeg SDK二次开发及直播美颜的入门图书,既有通俗易懂的基本概念,又有丰富的案例和原理分析,图文并茂,知识体系非常完善。对音视频、流媒体和直播的基本概念和原理进行复习,对重要的概念进行了具体的阐述,然后结合FFmpeg的SDK进行案例实战,既能学到实践操作知识,也能理解底层理论,非常适合初学者。建议读者先学习FFmpeg音视频流媒体系列的前3部,然后来学习本书。 本书总共13章。 第1~4章介绍FFmpeg 环境搭建、基础架构、核心数据结构及重要API。 第5~13章介绍FFmpeg的八大核心开发库,实现转封装、转码、过滤器、各种音视频特效、直播功能、音视频采集、音频重采样、视频缩放等功能,并结合OpenCV对图像进行特效处理等知识。 建议读者在学习过程中,循序渐进,不要跳跃。本书的知识体系是编者精心准备的,由浅入深,层层深入,对于抽象复杂的概念和原理,笔者尽量通过图文并茂的方式进行讲解,非常适合初学者。从最基础的FFmpeg SDK入门案例开始,理论与实践并重,读者一定要动手实践,亲自试验各个案例,并理解原理和流程。首先详细讲解API函数选项,然后应用到具体的案例中,争取每个案例都能将知识点活学活用。建议读者将本系列的第一部和第二部所学的音视频基础知识和流媒体直播基础知识应用到本书中,理论指导实践,加深对每个知识点的理解。不但要会用FFmpeg的SDK来完成各种复杂的音视频特效及直播功能,还要能理解底层原理及相关的理论基础。最后进行分析总结,争取使所学的理论得到升华,做到融会贯通。 致谢 首先感谢清华大学出版社责任编辑赵佳霓给编者提出了许多宝贵的建议,以及推动了本书出版。 在这里特别感谢雷(霄骅)博士对FFmpeg及音视频流媒体开发所做出的无私奉献,祝雷神在天堂一切安好。 感谢我的家人和亲朋好友,祝大家快乐健康每一天。 感谢我的学员,群里的学员越来越多,并经常提出很多宝贵意见。随着培训时间和经验的增长,对知识点的理解也越来越透彻,希望给大家多带来一些光明,尽量让大家少走弯路。群里的部分老学员通过学到的FFmpeg音视频流媒体知识已经获得了50万元的年薪(几乎没有低于30万元年薪的),这一点让我感到非常兴奋。将知识分享出去,是1变N的成效,看着大家成长起来,心里确实有一股股暖流。学习是一个过程,没有终点,唯有坚持,大家一起加油,为美好的明天而奋斗。 由于时间仓促,书中难免存在不妥之处,请读者见谅,并提宝贵意见。 梅会东 2022年7月8日于北京清华园