首页 > 行业资讯 > 大厂首席架构师手把手教你用风靡世界22年的视频编解码神器FFmpeg

大厂首席架构师手把手教你用风靡世界22年的视频编解码神器FFmpeg

时间:2023-10-30 来源: 浏览:

大厂首席架构师手把手教你用风靡世界22年的视频编解码神器FFmpeg

人民邮电出版社
人民邮电出版社

renyoushe

传递新知,开创新视界。

收录于合集

1

FFmpeg:

大厂都在用的神器

随着硬件算力的提升以及网络带宽的增长,视听娱乐已经成为互联网上的最主流应用之一。那你是否知道,在这些令人眼花缭乱的各种多媒体应用中,几乎都在用的一款神器是什么?

这款神器就是 FFmpeg ,它是一个开源的多媒体处理框架,可以用于转码、剪辑、合并、分割等多种音视频处理任务。FFmpeg的普及程度可能出乎你的意料,就是在你的电脑上,它也无所不在。

不信?就在电脑上最常用的几款应用中找一下。

第一个是国民应用——微信PC版。可以看到名为“libFFmpeg.dll”的动态库文件。

第二个,喜欢看视频的朋友们,可以在腾讯视频PC版的安装目录下找到“ffmpegsumo.dll”这个动态库文件。

再来一个,Windows自带浏览器Microsoft Edge的目录下,可以找到“ffmpeg.dll”动态库文件。

这里只列举三个,有兴趣的朋友可以尽情去探索,看看在自己的电脑上还能找出多少个“ffmpeg”来。不仅是在PC端,在移动端应用中也大量集成了ffmpeg。而在云服务领域,FFmpeg已经是构建多媒体服务的必备基础设施,是大厂极为倚重的开源神器。FFmpeg在互联网行业中渗透得如此之深,只要能吃透它,就不怕没有好机会。不过FFmpeg学习起来也有一定的门槛, 《深入理解FFmpeg》 可以帮助你快速达到专业程度。本书从命令行使用基础,到使用API实现定制化开发都有详细介绍。

我们先来了解FFmpeg的成长历程,以及体系架构思想。

2

FFmpeg是怎样炼成的

FFmpeg是由法国天才程序员Fabrice Bellard 于2000年创建的。他的目标是开发一套开源、跨平台的多媒体处理工具,以便在不同的操作系统和硬件平台上,能以统一的方式处理音视频文件。

关于FFmpeg名称的来历,Bellard曾专门回应,FF是“Fast Forward”,mpeg就是 Moving Picture Experts Group (动态图像专家组)

2003年Bellard离开FFmpeg,将项目交给 Michael Niedermayer。后者不负所托,维护FFmpeg历经20年岁月,将其送上多媒体处理工具的王座。

FFmpeg采用了分层式的模块化架构设计,其核心组件包括音视频编解码器、封装器、解封装器、滤镜和输出设备等模块。这些模块之间通过各种协议和接口相互配合,形成了一个完整的音视频处理流水线。

想把FFmpeg讲清楚要有强悍的技术能力。 《深入理解FFmpeg》的作者团队 就具备这样的实力,他们都是来自快手、腾讯等大厂的音视频架构师,技术扎实,行业经验丰富。

★   刘歧

快手音视频首席架构师,FFmpeg官方源代码活跃维护者,FFmpeg官方推荐顾问,FFmpeg GSoC Mentor,腾讯云TVP。擅长音视频流媒体技术、分布式流媒体系统设计、流媒体CDN系统开发,个人技术兴趣领域广泛,包括音视频技术、操作系统、分布式系统、通信技术、嵌入式技术等。目前在快手负责音视频基础技术架构升级与优化。

★  赵军

腾讯专家工程师、开源爱好者。2018年成为FFmpeg Maintainer,目前在腾讯云音视频负责视频云的编码、系统优化、媒体处理框架相关工作,曾在Intel DCG/NPG负责基于FFmpeg以及Intel平台上的视频编码/解码/转码、视频后处理、视频分析的硬件加速等工作。

★  杜金房

烟台小樱桃科技创始人,腾讯云TVP,FreeSWITCH中文社区创始人,为Free-SWITCH开源项目贡献了大量代码,包括其中的FFmpeg模块(mod_av)、WebRTC和视频会议MCU代码等,著有《FreeSWITCH权威指南》《Kamailio实战》。

  赵文杰

好未来教育集团资深架构师,开源流媒体系统SRS作者成员,擅长音视频编解码技术、流媒体直播技术、播放器开发技术、客户端技术等,已获得多篇音视频流媒体相关专利,曾任职于北京蓝汛、海尔、搜狐畅游等公司。

 宋韶颍

快手音视频SDK工程师,擅长音视频编解码技术、流媒体直播技术,深度使用FFmpeg落地多个分布式转码系统、流媒体CDN系统、音视频云编辑系统,曾任职于北京蓝汛、金山云等公司。

每位作者都发挥自己的技术专长,为本书贡献了极具价值且有深度的内容。现在,就让我们踏上深入学习FFmpeg的旅程。

3

学会用好“瑞士军刀”:

FFmpeg 的入门与进阶

只用FFmpeg这一个工具就可以完成视频的转码、特效、剪辑、合并、分割、提取音频、添加字幕等操作,这是其“瑞士军刀”美名的来由。

要用好这把“瑞士军刀”,本书从两个大的方面为我们设计了学习路径。我们将这两部分分为入门篇和进阶篇,下面详细说明。

 ▎入门篇

本部分首先介绍了 音视频相关的一系列基本知识 ,包括色彩空间、图像压缩原理、图像分辨率与宽高比、音频采样模数转换原理、NTSC与PAL制式等知识。

然后介绍了FFmpeg的模块组成,包括封装/解封装库AVFormat、编解码库AVCodec、滤镜模块AVFilter、图像转换模块swscale、设备模AVDeivce、音频转换模块swresample等。

FFmpeg的基本结构

命令行工具的使用是本部分的重点内容,书中对ffmpeg、ffplay、ffprobe三个工具分别进行了参数说明,接着以大量篇幅讲解音视频的处理实例。

以上命令行的处理流程如下图所示。

ffmpeg工具的处理流程

封装/解封装: 详细说明了MP4、FLV、mpeg-ts、HLS等容器的转换方法;

★解码/编码: 讲解了H264软硬编解码的方法,以及MP3、AAC音频的编码技术和方法;

流媒体技术: 对各种流媒体协议的处理进行介绍,包括RTMP、RTSP、HTTP、UDP/TCP、DASH的录制与发布方法;

滤镜: 介绍了多种特效和增强技术,包括文字图片水印、画中画、字幕、截图、音频处理、云剪辑常用技巧等;

设备采集: 说明在Windows/Linux/MacOS三种平台上的音视频设备数据采集方法。

FFmpeg的命令行能完成的功能也是十分强大的,在许多业务场景中,仅使用ffmpeg 工具就足以胜任。但要用好ffmpeg,还需要对书中的实例上手操作,在不断的实践中把握FFmpeg的运作逻辑。

 ▎进阶篇

本部分内容将深入FFmpeg的API, 这对读者提出了更高的技术要求 。首先,读者要具备良好的C语言基础,因为FFmpeg本身就是用C语言写成的,读者在调试API的过程中如果遇到问题,要能够追溯源码去解决问题。

其次,读者要熟悉FFmpeg的整体技术框架,在用到特定功能的时候,知道在哪个模块中去寻找API。作者建议读者应当抓住核心,灵活运用,在实践中学习成长。不要追求面面俱到的学习方式,那样会导致“只见树木却不见森林”。

编码、播放功能与各个库的调用关系

下面是书中对主要库的功能及使用说明:

libavformat: 这是处理音频、视频和字幕等封装和解封装的通用框架。书中讲解了媒体格式处理、协议封装与解封装的API函数的使用方法;

★libavcodec: 对音视频的编解码提供了通用的框架,它包含了大量的编码器和解码器。分析了使用新旧接口进行视频、音频编解码的方法和流程,重点介绍了硬件加速编解码功能;

libavfilter: 滤镜提供了诸多音视频的加工处理模块。主要介绍滤镜API函数的使用方法,重点以API使用为主,通过使用滤镜对视频添加Logo这个例子展开叙述;

辅助库: 介绍了libavutil,它是辅助多媒体编程的实用工具库。还介绍了针对图像转换、缩放的libswscale,以及针对音频重采样、格式转换的libswresample。

在说明了主要功能库的使用之后,书中讲解了一个完整的音视频播放器开发实例,还有在RTC场景中的实例解析。最后说明定制FFmpeg模块开发的方法。

读者走到这一步,已经可以随心所欲地操控 FFmpeg,根据业务场景灵活运用API创造性地解决实际问题。当然,如果能再往前一步,成为FFmpeg官方源码的贡献者,则能创造更大的价值。

4

结语

FFmpeg本身是一个规模庞大的开源工程,并且音视频技术中又包含了大量复杂的编解码算法,在没有指引的情况下,初学者难觅其门。

《深入理解FFmpeg》就像是一把打开FFmpeg 技术的钥匙,即便是零基础学习者,只要对音视频技术抱有兴趣,都可以拿着这把钥匙打开FFmpeg世界的大门。

本书 内容相当丰富 ,从介绍音视频技术的基础开始,到FFmpeg命令行工具的详细解析以及API的使用方法,再到内部组件的定制开发等,可以让学习者完成从入门到专业水准的成长。

本书最大亮点是汇聚了 大量的应用案 ,在实战中讲解技术。在入门篇中解析封装、转码功能时,均给出完整命令行,并且进行了详细解读。在进阶篇中的API使用方法介绍中,也对可直接运行的代码进行了细致的分析。

同时作者为了方便读者理解,精心绘制了多幅技术架构图、流程图、参数说明表等,帮助读者轻松掌握技术原理与应用。本书既可以作为问题速查手册,也是系统化学习指南。

本书以其强大的作者团队实力、在FFmpeg技术上的有深度和有广度地透彻讲解,以及精选的诸多应用案例,赢得业内一片赞誉。下面看看业界大佬们是怎么说的。

5

大咖推荐

我真心希望这本书能够为中国的FFmpeg用户更好地理解如何使用、增强、掌握和扩展FFmpeg提供帮助,为中国和世界带来更多的开源使用案例。

——  Jean-Baptiste Kempf , FFmpeg 社区委员会成员, VideoLAN 主席, VLC 开发者

本书作者之一刘歧可谓 FFmpeg 中国社区的领军人物,自《FFmpeg 从入门到精通》出版五年之后,他再次推出力作,继续带领大家体会 FFmpeg 的博大精深。

——  马思伟,北京大学教授

本书由多位技术专家联合编写,详细介绍了FFmpeg的方方面面,从基本知识到工具使用,再到SDK接口的调用、与第三方工具的集成,以及自定义模块的开发等,是学习FFmpeg的不二之选。  

—— 宋利,上海交通大学教授,“媒矿工厂”负责人

当进入一个新领域时,我会阅读对该领域有深刻理解的人所写的书籍,这是因为他们作品内容的准确性更高,能够帮助我更高效地进入这个领域。由刘歧牵头编写的《深入理解FFmpeg》正是这样一本好书,值得向大家推荐。

——  杨成立,开源项目SRS(Simple Realtime Server) 创始人、技术委员会成员

通过阅读本书,大家将可以了解关于FFmpeg的最新功能与使用方法,从源头理解FFmpeg背后的开发设计逻辑与考量。希望大家借助FFmpeg,让自己和团队更上一层楼。

——包研,LiveVideoStack联合创始人

我对刘歧以及参与编著本书的几位朋友充满信心,本书也将成为指导、启发众多技术从业者的重要资源,帮助他们更好地应对技术挑战,实现创新突破!

——刘帅,好未来教研云负责人

FFmpeg已经风靡世界22年,如今生命力是愈加旺盛。掌握好这款大厂标配神器,定能在职业发展之路上不断突破,现在就开始摸透《深入理解FFmpeg》吧。

推荐阅读

▲点击封面,进入购买界面

《深入理解FFmpeg》

本书详细介绍了开源音视频处理软件FFmpeg的使用,按照所讲述的内容及读者的不同层次,本书划分为上下两篇。上篇为基础与参数详解,介绍了FFmpeg的基本组成部分、工具使用,以及封装、转码、流媒体、滤镜和设备操作。下篇为API使用及开发,介绍了FFmpeg封装、编解码和滤镜部分的API使用操作,相关操作均以实例方式进行说明,包括新旧API的操作方法和异同,并给出了大量的API使用、自定义功能模块、基于FFmpeg的API开发自己的播放器的示例,以及其在实际开源软件中的应用等。

本书不仅适合音视频流媒体处理的研发人员、对音视频技术应用和实时音视频通信感兴趣的技术人员,还适合高等院校计算机相关专业的学生阅读。

往期好文

点击图片即可阅读全文

2023年世界读书日精选好书推荐

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐