FFmpeg入门详解:音视频流媒体播放器原理及应用
上QQ阅读APP看书,第一时间看更新

前言

近些年,随着5G网络技术的迅猛发展,FFmpeg音视频及流媒体直播应用越来越普及,音视频流媒体方面的开发岗位也非常多,然而,市面上缺少通俗易懂的系统完整的音视频及流媒体播放器方面的入门书籍。网络上的知识虽然不少,但是太散乱,不适合读者入门。很多程序员想从事音视频或流媒体开发,但始终糊里糊涂、不得入门。笔者在这条路上付出了艰苦的努力,终于有一些收获。借此机会,整理成专业书籍,希望对读者有所帮助,少走弯路。FFmpeg发展迅猛,功能强大,命令行也很简单、很实用,但是有一个现象:即便使用命令行做出了一些特效,但依然很难理解原理,不知道具体的参数是什么含义。音视频与流媒体是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学基础理论,而是直接做项目、看源码,但在看到C/C++的代码时往往会一头雾水,不知道代码到底是什么意思。这是因为没有学习音视频和流媒体的基础理论,如同学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂,所以一定要认真学习基础理论,然后学习播放器、转码器、非编、流媒体直播、视频监控等。

众所周知,播放器使用起来简单方便,但从源码级别开发一款播放器则比较困难。本书为FFmpeg音视频流媒体系列的第5册,侧重于播放器原理及源码实现,重点讲解LibVLC二次开发播放器、Qt Multimedia实现音视频播放器、OpenCV结合MFC实现视频采集及播放、SDL 2开发库详解及FFplay二次开发播放器,最后从源码级别剖析FFplay播放器及音视频同步原理等知识点。

本书主要内容:

第1章 音视频及流媒体播放原理。

第2章 VLC播放器及二次开发应用。

第3章 Qt信号槽机制及图片轮播。

第4章 Qt播放音视频及Multimedia多媒体模块。

第5章 MFC+OpenCV视频采集及播放。

第6章 SDL 2开发库及高级应用。

第7章 FFmpeg解码音视频及流媒体。

第8章 FFplay+SDL 2开发音视频流媒体播放器。

第9章 FFplay源码剖析及音视频同步。

阅读建议

本书是一本音视频与流媒体播放器方面的专业书籍,既有通俗易懂的基本概念,又有丰富的案例和原理分析,图文并茂,知识体系完善。对音视频、流媒体和播放器的基本概念和原理进行复习,对重要的概念进行了具体阐述,然后结合LibVLC、Qt Multimedia、OpenCV、SDL 2、FFmpeg及FFplay等知识点开发播放器并进行案例实战,使读者既能学到实践操作知识,也能理解底层理论,非常适合初学者。建议读者先学习FFmpeg音视频流媒体系列的前4册,然后学习本书。

本书共分为四大部分。

第一部分,即第1章和第2章,介绍音视频流媒体的入门概念及使用LibVLC库二次开发实现播放器。

第二部分,即第3章和第4章,介绍Qt Multimedia多媒体模块的专业知识,并实现音视频播放器。

第三部分,即第5章,使用OpenCV4结合MFC实现视频采集及播放功能。

第四部分,即第6~9章,使用SDL 2结合FFplay二次开发实现播放器。

建议读者在学习过程中,循序渐进。本书的知识体系是笔者精心准备的,对于抽象复杂的概念和原理,笔者尽量通过图文并茂的方式进行讲解,非常适合初学者。从最基础的音视频流媒体概念和FFmpeg编解码知识点入手,理论与实践并重,读者一定要动手实践,亲自试验各个案例,并理解原理和流程。首先详细讲解各个模块的API函数功能,然后应用到具体的案例中,争取每个案例都能将知识点活学活用。建议读者将本系列的前4册所学的音视频基础知识和流媒体直播基础知识应用到本书中,理论指导实践,加深对每个知识点的理解。不但要开发出专业的播放器,还要理解底层原理及相关的理论基础。最后进行分析总结,争取使所学的理论升华,做到融会贯通。

致谢

首先感谢清华大学出版社赵佳霓编辑给编者提出了许多宝贵的建议,并推动了本书的出版。感谢我的家人和所有的亲朋好友,祝大家快乐健康。感谢我的学员,群里的学员越来越多,并经常提出很多宝贵意见。随着培训时间和经验的增长,对知识点的理解也越来越透彻,希望给大家多带来一些启发,尽量让大家少走弯路。群里的部分老学员通过学到的FFmpeg音视频流媒体知识已经获得了50万元的年薪,这一点让我感到非常欣慰。将知识分享出去,是1变N的成效,看着大家成长起来,心里确实有一股股暖流。学习是一个过程,没有终点,唯有坚持,大家一起加油,为美好的明天而奋斗。

由于时间仓促,书中难免存在不妥之处,请读者见谅,并提宝贵意见。

梅会东

2023年1月8日于北京清华园