首页>参考读物>电子电工>电子工程

FFmpeg从入门到精通
作者 : 刘歧,赵文杰 编著 武爱敏 审校
出版日期 : 2018-03-20
ISBN : 978-7-111-59220-4
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 294
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书是一本介绍FFmpeg的实战技术指南,全书共10章,分为两个部分,主要讲解如何使用FFmpeg进行开发。第一部分(第1~7章)为FFmpeg的命令行使用篇,介绍了FFmpeg的基础组成部分、FFmpeg工具使用、FFmpeg的封装操作、FFmpeg的转码操作、FFmpeg的流媒体操作、FFmpeg的滤镜操作、FFmpeg的设备操作。第二部分(第8~10章)为FFmpeg的API使用篇,介绍了FFmpeg封装部分的API使用操作、FFmpeg编解码部分的API使用操作,FFmpeg滤镜部分的API使用操作,相关操作均以实例方式进行说明,包括新API及旧API的操作。

图书特色

FFmpeg官方代码维护者与SRS主要贡献者联袂出品,音视频领域资深专家校审。
深入讲解流媒体开发与应用技术,通过实例详细介绍FFmpeg音视频技术的具体使用方法,大幅降低新手入门难度,同时解决了FFmpeg使用者遇到疑惑无处可查的问题。

图书前言

为什么要写这本书
在2011年之前,笔者的工作主要是以图形系统和Linux设备驱动程序开发为主,一个偶然的机会,笔者参与了Android的流媒体框架开发与技术支持工作,于是笔者开始快速地学习音视频流媒体技术。后来又因参与某广电的云计算项目时负责云转码项目,笔者又开始学习使用FFmpeg,在学习的过程中遇到了很多问题,而手册的内容又非常多,即使系统地学习一遍,也很难及时地解决自己遇到的问题。当时(2012年)网络中并没有现如今这么多的音视频相关技术文档分享,大多数都是提问,很少能看到精确的解答,所以最终还是耐心地读手册。在日积月累的学习过程中,笔者发现对FFmpeg感兴趣的人越来越多,因此便计划进一步地学习和整理FFmpeg的相关使用知识,以期能够帮助到更多的朋友。
近几年,音视频流媒体技术的应用日益广泛,尤其是以视频直播中音视频流媒体处理的应用最甚,但是市面上与“老牌”音视频处理工具FFmpeg相关的介绍书籍少之又少,虽然市面上有些讲述音视频纯理论的书籍,但是并不能快速指导新人上手操作,并且大多数人看到FFmpeg的官方文档篇幅之长时望而却步,入门的新手日渐增多并且经常会有不同的人问到相同的问题,以上种种激发了笔者编写本书的想法。
2014年笔者所在的公司主导流媒体CDN的开发,再加上市场对转码、移动端推流SDK、播放SDK以及音视频处理的需求愈加强烈,而FFmpeg又刚好可以快速满足上述需求的大多数场景,以上种种更加充分地说明了本书出版的必要性。
在与FFmpeg相关的开发讨论与交流过程中,笔者了解到有很多公司尤其是云服务相关的公司,对FFmpeg的使用各有不同,有的使用命令行,有的使用SDK。所以本书分为两部分进行介绍,前半部分以FFmpeg的命令行使用为主,后半部分以SDK基本使用方法的介绍为主。当然,FFmpeg如今发展速度迅猛,本书讲解的内容将会尽力以最新版本为准。笔者将会持续与广大读者沟通交流FFmpeg的相关技术,希望能够为企业同行或者感兴趣的读者提供参考,笔者希望本书能够帮助大家提高工作效率、解决工作和学习中的实际问题。
另外,市场上还鲜有出现关于FFmpeg实战相关的技术书籍,FFmpeg的技术知识主要以网络中的博客、论坛等为主,因此笔者希望本书的出版能够在图书领域和技术领域打开新的篇章,让我们的图书出版行业多一个FFmpeg音视频处理相关类目,也让我们的技术领域多一个音视频流媒体处理实战相关的方向。
本书的读者对象
本书的读者对象具体如下。
音视频流媒体处理的研究人员
音视频流媒体技术的研发人员
对音视频流媒体处理开发感兴趣的技术人员
计算机相关专业的高等院校学生
如何阅读本书
本书一共包含10章,按照所讲述的内容以及所面向读者的不同层次,可以划分为两大部分,具体如下。
第一部分为FFmpeg的命令行使用篇,包括第1~7章,介绍了FFmpeg的基础组成部分、FFmpeg工具使用、FFmpeg的封装操作、FFmpeg的转码操作、FFmpeg的流媒体操作、FFmpeg的滤镜操作和FFmpeg的设备操作。
第二部分为FFmpeg的API使用篇,包括第8~10章,介绍了FFmpeg封装部分的API使用操作、FFmpeg编解码部分的API使用操作和FFmpeg滤镜部分的API使用操作,相关操作均以实例方式进行说明,包括新API及旧API的操作。
如果你已经能够通过源代码独立安装FFmpeg,那么可以跳过第1章直接从第2章开始阅读;如果你对命令行使用没有兴趣,或者希望使用FFmpeg的API开发,那么可以跳过前7章直接从第8章开始阅读。笔者建议最好是从第1章开始阅读。
勘误和支持
由于笔者的水平有限,加之编写的同时还要参与开发工作,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果读者有任何宝贵意见,都可以发送邮件到lq@chinaffmpeg.org或者740936897@qq.com,期待您的真挚反馈。
另外,本书代码相关的举例均可以在FFmpeg的源代码目录的doc/examples中获得,也可以通过FFmpeg官方网站的文档获得:https://ffmpeg.org/doxygen/trunk/examples.html。
FFmpeg发展了至少17年,积累了极其丰富的资料,能够满足大部分的需求。由于FFmpeg的更新与版本的迭代,不同版本之间使用的参数相对来说会稍微有所不同,由于本书篇幅有限,所以FFmpeg的很多交流社区的资源同样值得参考。
官方文档资料
FFmpeg官方文档:http://ffmpeg.org/documentation.html
FFmpeg官方wiki:https://trac.ffmpeg.org
中文经典资料
雷霄骅博士总结的资料:http://blog.csdn.net/leixiaohua1020
罗索实验室:http://www.rosoo.net
ChinaFFmpeg:http://bbs.chinaffmpeg.com
除了以上这些信息,还可以通过Google、百度等搜索引擎获得大量相关资料。
FFmpeg本身也提供了命令参数的详细说明,读者可以查看FFmpeg的帮助信息,后面的章节将会对此进行详细的介绍。
致谢
首先感谢我的爱人一直以来对我的工作和写作的支持与理解,是你在我背后默默的支持,才让我有更多的时间和精力放到工作及写作中。
感谢FFmpeg社区中的朋友们对本书提供了大力的支持,感谢蓝汛、高升、金山云、学而思网校与OnVideo的伙伴们长期的支持与贡献,没有你们也就不会有这本书的问世。
感谢机械工业出版社华章分社的编辑,感谢你们的耐心指导与帮助,引导我们顺利地完成了全部书稿。
感谢FFmpeg社区、ChinaUnix社区、LVS社区,社区很好地提供了技术沟通与交流的平台,帮助我们更好地成长。
谨以此书献给我最亲爱的家人、朋友、同事,以及众多为互联网、流媒体添砖加瓦的从业者们。

刘歧、赵文杰
2018年1月于北京

上架指导

嵌入式

封底文字

音视频流媒体在生活中随处可见,音视频技术也日渐成为非常重要的技术,尤其是音视频处理。尽管有大量的开源软件可以帮助你做音视频处理,并提供了简单的操作接口,但是对于新手来说还是有些迷茫。
本书围绕着音视频处理的FFmpeg的发展过程、FFmpeg的组成、FFmpeg的命令行使用、FFmpeg的API使用等内容,由浅入深地介绍了使用FFmpeg进行音视频处理的方法,并辅以大量实例,从而帮助对音视频处理感兴趣的读者对FFmpeg有更多的了解。
通过阅读本书,你将学到:
FFmpeg的历史
FFmpeg的基本结构
FFmpeg的基本用法
使用FFmpeg进行日常的音视频处理工作的方法
使用FFmpeg的API进行音视频处理工作的细节

推荐序

推荐序一
缘起
随着移动互联网的发展和网络基础设施的逐步升级,我们经历了从UGC到PGC,从PC端到移动端,从音频到视频,从点播到直播的巨大变迁,现在各种音视频应用逐渐成为主流。这些应用构建的基础是什么呢?都离不开FFmpeg,以至于大家都说,FFmpeg就是音视频界的瑞士军刀。它的出现,让以前只为封闭的广播电视系统开发的,高级而又神秘的技术,飞入平常百姓家,大大促进了互联网的繁荣。从另一方面来看,这把军刀的功能也越来越丰富,既可以解决各种实际问题,又是一本多媒体百科全书,工作之余,每次翻一下文档代码都会得到惊喜。
本人自从07年接触FFmpeg开始,不知不觉已经十年了,FFmpeg版本也由0.x升级到3.x,中间经历了巨大的架构变化,功能也越来越强大。最早大家只是用它作为mplayer的解码库之一,后来它逐渐支持的codec、format、protocol逐步就超越了mplayer,甚至把mplayer的filter也都支持了,因此从播放端到服务端,到制作端和推流端,几乎一切需求都可以搞定。回顾这些年在社区里面的经验,感觉国内做相关应用开发的人还是比较多的,真正贡献核心代码的并不多,与我们国家的程序员人口规模严重不符。因此虽然出现了“雷神”这样的技术科普大神,各种视频网站app各领风骚,却仍总觉得有缺憾。
初识
2016年,惊奇地发现 maintainer页面上突然出现了一个中国人的名字,Steven Liu,还是一位在北京的工程师,顿觉十分厉害,遍寻朋友圈而不得,十分沮丧。直到听说onVideo这个创业项目,才了解到了他本尊就跟我二度相连,不禁感慨世界好小。赶紧约聊,一见如故,交集颇多,这让我更加相信这个世界上有缘人终会相会的。这位起着洋名的Steven老师就是人称大师兄(悟空)的刘歧,他有着东北人与生俱来的乐观、风趣,对于技术有着由衷的执著热爱,虽然工作很忙,还是对于开发社区倾注大量心血,无论是答疑解惑,还是推进开发,一直是无私奉献,一丝不苟。支撑他的是一种无问西东的信念,在如今的时代,相比于砌墙,修建大教堂逐渐变成了一种奢侈的追求。我辈与之相比,高下立判,只能盼望能否有机会为他,为社区做点什么。当得知大师兄在撰写关于FFmpeg应用开发的书籍,即自告奋勇写推荐,望尽微薄之力,以弥补内心缺憾。
榜样
在我看来,作为程序员,应该把亲身参与知名开源项目,作为个人技能发展的高级追求。为什么呢?成功的开源项目其实并不多,往往都是比较好的解决了某个基础性需求,是凝聚了大量优秀程序员智慧的结晶,其架构思想、开发协作流程、远程协同解决问题的方法,对于有技术追求的同学,都会是十分受益的。在公司写代码,往往只有一两个人review,而在社区里面,很可能是几十人几百人review,其中还会有世界级的专家。而成为这种项目的maintainer,则需要你本人付出大量努力,真正为项目贡献重要的功能,赢得社区的信任,自己也就成为了那个世界级的专家。大师兄在过去几年中,克服了自己的语言障碍,“大闹天宫”而赢得尊重,成为了千里挑一的maintainer,确实是我辈学习的榜样。
本书应该如何读
有大师兄对于FFmpeg的深入理解作为基础,本书在内容的全面性、理论和实践的结合方面,都是值得期待的。
很多同学热爱多媒体应用开发,但是实践起来会遇到很多问题,在社区中活跃参与,自身却很难获得提高,虽然偶尔通过牛人指点解决了部分一次性问题,但还是会经常遇到各种新坑;为什么呢?往往是因为缺乏系统化的知识体系,因此无法真正入门,更难以深入。因此对于这些希望入门、入行的同学,本书系统性地梳理了从基本命令行到高级应用的方方面面,能够带你进入多媒体技术的殿堂。
其次,国内的教育重理论而轻实践,对于有一定多媒体专业背景知识,而不知如何实践落地的读者,认真读完此书可以对理论如何结合实践有一个全面的认识,音视频算法再也不是抽象枯燥的公式、标准,而是鲜活的应用场景,你从此可以利用手中的知识技能做一些有用的事情,解决实际需求,比如,帮朋友压个片。
另外,对于已经熟悉多媒体开发的同学,本书也是一本全面的手册,便于你对自己的知识体系查缺补漏,看完一定会有惊喜。
而对于希望更深入学习多媒体架构知识,甚至以大师兄为榜样希望贡献社区,成为committer的程序员们,本书也是一本好的指南。以Linux操作系统为例,从基本使用开始,到搭建互联网服务器,到深入调优,做内核开发,大型系统构建,是一个逐步深入的过程。FFmpeg也是一样,从各种命令行处理,阅读代码了解背后的原理,解决实际问题,到模块级别开发,架构改进,再到融会贯通贡献社区,亦是必由之路。FFmpeg的分层模块化架构思想,与Linux内核一样,是十分简洁优美的,其中还有大量的图像视频基础库,网络协议实现,底层汇编优化,是营养丰富的宝库。建议大家能够站在前辈巨人的肩膀上,学习其架构精髓,主干贯穿,从实践角度构建你的程序员世界观,从而完成从小工到大师的成长过程。本书对于FFmpeg的基本概念做了初步解读,帮助大家由浅入深,开始探索FFmpeg这个宝库。
最后希望每个热爱技术的同学都能如大师兄一般,经历艰难险阻,取得真经。

于冰
流媒体行业先烈
2018年1月于北京



推荐序二
认识刘歧是通过SRS的作者杨成立(Winlin)引荐,故事发生在2017年3月初。当时我正在筹备第一次技术沙龙,急需音视频领域的技术专家。虽然当时未能邀请刘歧成为沙龙的讲师,但他和本书的另外一名作者赵文杰都以听众的身份参与了,我们的缘分也就此开始。随后和刘歧有过多次合作,基本上有求必应,先干活,后谈甚至不谈钱。平时虽然工作很忙,但我很关注刘歧的“FFmpeg”技术群,用于发现技术趋势、专家线索。我发现大多数时候,只要群里有人提出问题,刘歧都会耐心解答。有一次和刘歧电话引荐专家,我问他:一般要忙到几点?答曰:不一定,干累了就回去。作为一家创业公司的技术合伙人,还要定期维护FFmpeg社区,回答网友的提问。我不知道这是不是一种热爱,但可以肯定这很占用自己的时间。
去年,我的同事王宇豪曾经对刘歧做过一次邮件访谈,其中有两句话令人印象深刻,从中能找到答案,“每当从ticket、Mail List中看到有人在使用自己开发的功能的时候,那种内心的愉悦感是难以形容的”,“很多人都觉得应该‘少走弯路’,其实有的时候看一看别人踩过的坑,甚至帮助别人去踩一脚之后,你会发现当自己以后做类似事情的时候,类似的这种坑已经被填掉。”
过去六年多,我一直在技术社区与开发者打交道,这是一群热情、务实、拥有探索精神的家伙,和这些人在一起让自己回到了那个年轻、充满梦想的年龄。
得知刘歧和文杰要出一本关于FFmpeg的书,第一反应这是一件好事。为什么这么说?原因有二。
首先,国内音视频开发者需要这样一本系统的FFmpeg总结与实践图书。相比于其他领域,音视频领域对于开发者的技能要求更加综合,对知识的关联、动手能力要求更高。本书从多年的实践经验出发,结合FFmpeg官方社区的视角,让本书的内容及架构更加务实而权威。方便开发者快速学习、掌握。
其次,刘歧与文杰的组合相得益彰。去年和两位合作过一场FFmpeg的培训,学员的反馈甚佳。刘歧有丰富的公司与项目研发背景,又通过FFmpeg社区了解国际上最新应用实践;文杰拥有丰富的在线教育场景下的实践经验。最后,拥有十余年研发经验的武爱敏作为本书的审校,给予了更高的质量保障。
技术开发是一门实践科学,图书、文档、源码都是工具,掌握他们仍需要潜心钻研与实践,勤奋会让你拿到开启精进大门的钥匙,善用工具则让你站上了巨人的肩膀。

包研
LiveVideoStack创始人
2018年2月于北京



推荐序三
Learning without thinking is useless; thinking without learning is dangerous.
学而不思则罔,思而不学则殆
——孔子
初识Steven Liu 实际上是在FFmpeg 的Mail List,他在FFmpeg社区非常的活跃,提交了大量的Patch又帮助review了很多其他人的Patch,看到他的ID,猜测大概是国人。那时我还处于潜水在FFmpeg社区的Mail List的状态,想着是不是可以进入这个社区做点事情,而此时的Steven Liu,已经是FFmpeg中DASH、HLS等部分的维护者,是少数几个在FFmpeg社区的有影响力的国人。
后来我一边从FFmpeg社区学习(主要是Steven Liu、Mark Thompson、Michael Niedermayer等一众活跃的维护者),一边尝试提交自己的一些Patch,大概也是这个时候,Steven Liu注意到了我的存在(我猜测主要是他作为FFmpeg社区中的少数的几个国人贡献者之一,看到有另外的国人尝试融入这个社区,产生了莫名亲近感吧,不过这种猜测我一直没有向他亲证),我们开始一些断断续续的网上联系。某天,突然接到他的邀请,说要借着LiveVideoStackCon Beijing 2017 的机会,让FFmpeg社区的国人在线下碰面,见面后知道,他在写一本有关FFmpeg的书,这个项目从想法到开始实施,经历了3年多的时间,本想去拜读他的初稿,但碍于初见,没有提出;但是开始持续关注他在某个FFmpeg技术讨论群中偶尔谈及的这本书的进度;何时完成初稿,何时进行评审,何时开始发行等,心中充满期待,想等后面等正式发行后,买来拜读,结果某天与他私底下聊起本书,他告诉我可以写一篇序言,我便自荐了这篇序言。
FFmpeg作为音视频领域的瑞士军刀,涉及的知识之繁杂,从它的庞杂的选项上可以推知一二;这本书从FFmpeg社区开始讲起,后面逐步引入最为重要的几个基本工具,诸如FFmpeg、FFplay这些;之后逐步展开到作者最为擅长的流媒体相关的一些主题,最后简单概述了FFmpeg API层面上的使用。整本书中,谈及了FFmpeg 的社区,各种应用场景,特别是流媒体相关的一些场景,还有工具的使用,背后的设计考虑等。本书所着重的工具,对于大部分使用者,可助其解决问题;而本书谈及的社区,则可帮助读者理解FFmpeg这类开源社区的运作方式以及历史;另外,本书也充分体现了对开源社区的所推崇的共享文化的身体力行,把自身的知识与技能集结成书,无私传递给别人,特别还在他自身创业之际,尤为不易;而我作为最初的几个能读到本书的读者之一,从中获益颇多,希望其他读者也可以有所得,这也是他写书的初衷吧。大部分开源社区的知识,大多口口相传,融入代码中,缺少文档,非常感谢还有Steven Liu这样的开源践行者,把知识的获取变得更加的便利,去促进知识的传播,这样我们也可以在他们肩上快速地去探求“事情为何如此”,也让我们可以从这积淀丰厚的开源文化中汲取力量。

赵军
开源爱好者、FFmpeg社区贡献者
2018年1月于上海

图书目录

本书赞誉
推荐序一
推荐序二
推荐序三
前言
第一部分 FFmpeg的命令行使用篇
第1章 FFmpeg简介 2
1.1 FFmpeg的定义 2
1.2 FFmpeg的历史 2
1.3 FFmpeg的基本组成 3
1.4 FFmpeg的编解码工具ffmpeg 6
1.5 FFmpeg的播放器ffplay 9
1.6 FFmpeg的多媒体分析器ffprobe 9
1.7 FFmpeg编译 11
1.7.1 FFmpeg之Windows平台编译 11
1.7.2 FFmpeg之Linux平台编译 13
1.7.3 FFmpeg之OS X平台编译 15
1.8 FFmpeg编码支持与定制 16
1.8.1 FFmpeg的编码器支持 24
1.8.2 FFmpeg的解码器支持 25
1.8.3 FFmpeg的封装支持 27
1.8.4 FFmpeg的解封装支持 28
1.8.5 FFmpeg的通信协议支持 29
1.9 小结 29
第2章 FFmpeg工具使用基础 30
2.1 ffmpeg常用命令 30
2.1.1 ffmpeg的封装转换 37
2.1.2 ffmpeg的转码参数 38
2.1.3 ffmpeg的基本转码原理 38
2.2 ffprobe常用命令 40
2.3 ffplay常用命令 50
2.3.1 ffplay常用参数 50
2.3.2 ffplay高级参数 53
2.3.3 ffplay的数据可视化分析应用 57
2.4 小结 59
第3章 FFmpeg 转封装 60
3.1 音视频文件转MP4格式 60
3.1.1 MP4格式标准介绍 61
3.1.2 MP4分析工具 76
3.1.3 MP4在FFmpeg中的Demuxer 79
3.1.4 MP4在FFmpeg中的Muxer 80
3.2 视频文件转FLV 84
3.2.1 FLV格式标准介绍 84
3.2.2 FFmpeg转FLV参数 89
3.2.3 FFmpeg文件转FLV举例 89
3.2.4 FFmpeg生成带关键索引的FLV 91
3.2.5 FLV文件格式分析工具 91
3.3 视频文件转M3U8 93
3.3.1 M3U8格式标准介绍 93
3.3.2 FFmpeg转HLS参数 95
3.3.3 FFmpeg转HLS举例 96
3.4 视频文件切片 105
3.4.1 FFmpeg切片segment参数 105
3.4.2 FFmpeg切片segment举例 106
3.4.3 FFmpeg使用ss与t参数进行切片 110
3.5 音视频文件音视频流抽取 111
3.5.1 FFmpeg抽取音视频文件中的AAC音频流 111
3.5.2 FFmpeg抽取音视频文件中的H.264视频流 112
3.5.3 FFmpeg抽取音视频文件中的H.265数据 113
3.6 系统资源使用情况 114
3.7 小结 115
第4章 FFmpeg转码 116
4.1 FFmpeg软编码H.264与H.265 116
4.1.1 x264编码参数简介 117
4.1.2 H.264编码举例 118
4.2 FFmpeg硬编解码 130
4.2.1 Nvidia GPU硬编解码 130
4.2.2 Intel QSV硬编码 133
4.2.3 树莓派硬编码 137
4.2.4 OS X系统硬编解码 139
4.3 FFmpeg输出MP3 141
4.3.1 MP3编码参数介绍 141
4.3.2 MP3的编码质量设置 142
4.3.3 平均码率编码参数ABR 144
4.4 FFmpeg输出AAC 145
4.4.1 FFmpeg中的AAC编码器使用 145
4.4.2 FDK AAC第三方的AAC编解码Codec库 146
4.4.3 高质量AAC设置 148
4.4.4 AAC音频质量对比 149
4.5 系统资源使用情况 149
4.6 小结 150
第5章 FFmpeg流媒体 151
5.1 FFmpeg发布与录制RTMP流 151
5.1.1 RTMP参数说明 152
5.1.2 RTMP参数举例 152
5.2 FFmpeg录制RTSP流 159
5.2.1 RTSP参数说明 159
5.2.2 RTSP参数使用举例 159
5.3 FFmpeg录制HTTP流 163
5.3.1 HTTP参数说明 163
5.3.2 HTTP参数使用举例 163
5.3.3 HTTP拉流录制 166
5.3.4 拉取HTTP中的流录制FLV 166
5.4 FFmpeg录制和发布UDP / TCP流 166
5.4.1 TCP与UDP参数说明 166
5.4.2 TCP参数使用举例 167
5.4.3 TCP/UDP使用小结 172
5.5 FFmpeg推多路流 173
5.5.1 管道方式输出多路流 173
5.5.2 tee封装格式输出多路流 174
5.5.3 tee协议输出多路流 175
5.6 FFmpeg生成HDS流 176
5.6.1 HDS参数说明 177
5.6.2 HDS使用举例 177
5.7 FFmpeg生成DASH流 179
5.7.1 DASH参数说明 180
5.7.2 DASH参数使用举例 180
5.8 小结 181
第6章 FFmpeg滤镜使用 182
6.1 FFmpeg滤镜Filter描述格式 182
6.1.1 FFmpeg滤镜Filter的参数排列方式 182
6.1.2 FFmpeg滤镜Filter时间内置变量 183
6.2 FFmpeg为视频加水印 183
6.2.1 文字水印 183
6.2.2 图片水印 187
6.3 FFmpeg生成画中画 189
6.4 FFmpeg视频多宫格处理 192
6.5 FFmpeg音频流滤镜操作 193
6.5.1 双声道合并单声道 193
6.5.2 双声道提取 194
6.5.3 双声道转双音频流 195
6.5.4 单声道转双声道 196
6.5.5 两个音频源合并双声道 197
6.5.6 多个音频合并为多声道 198
6.6 FFmpeg音频音量探测 199
6.6.1 音频音量获得 199
6.6.2 绘制音频波形 200
6.7 FFmpeg为视频加字幕 201
6.7.1 ASS字幕流写入视频流 201
6.7.2 ASS字幕流写入封装容器 202
6.8 FFmpeg视频抠图合并 205
6.9 FFmpeg 3D视频处理 206
6.9.1 stereo3d处理3D视频 206
6.9.2 3D图像转换举例 207
6.10 FFmpeg定时视频截图 208
6.10.1 vframe参数截取一张图片 208
6.10.2 fps滤镜定时获得图片 209
6.11 FFmpeg生成测试元数据 210
6.11.1 FFmpeg生成音频测试流 210
6.11.2 FFmpeg生成视频测试流 211
6.12 FFmpeg对音视频倍速处理 212
6.12.1 atempo音频倍速处理 212
6.12.2 setpts视频倍速处理 213
6.13 小结 215
第7章 FFmpeg采集设备 216
7.1 FFmpeg中Linux设备操作 216
7.1.1 Linux下查看设备列表 216
7.1.2 Linux采集设备fbdev参数说明 217
7.1.3 Linux采集设备fbdev使用举例 217
7.1.4 Linux采集设备v4l2参数说明 218
7.1.5 Linux采集设备v4l2使用举例 218
7.1.6 Linux采集设备x11grab参数说明 220
7.1.7 Linux采集设备x11grab使用举例 220
7.2 FFmpeg中OS X设备操作 222
7.2.1 OS X下查看设备列表 223
7.2.2 OS X下设备采集举例 223
7.3 FFmpeg中Windows设备操作 227
7.3.1 FFmpeg使用dshow采集音视频设备 227
7.3.2 FFmpeg使用vfwcap采集视频设备 228
7.3.3 FFmpeg使用gdigrab采集窗口 229
7.4 小结 230
第二部分 FFmpeg的API使用篇
第8章 FFmpeg接口libavformat的使用 232
8.1 音视频流封装 232
8.2 音视频文件解封装 235
8.3 音视频文件转封装 237
8.4 视频截取 240
8.5 avio内存数据操作 242
8.6 小结 244
第9章 FFmpeg接口libavcodec的使用 245
9.1 FFmpeg旧接口的使用 245
9.1.1 FFmpeg旧接口视频解码 245
9.1.2 FFmpeg旧接口视频编码 248
9.1.3 FFmpeg旧接口音频解码 251
9.1.4 FFmpeg旧接口音频编码 252
9.2 FFmpeg新接口的使用 254
9.2.1 FFmpeg新接口音频编码 255
9.2.2 FFmpeg新接口音频解码 257
9.2.3 FFmpeg新接口视频编码 260
9.2.4 FFmpeg新接口视频解码 260
9.3 小结 261
第10章 FFmpeg接口libavfilter的使用 262
10.1 filtergraph和filter简述 262
10.2 FFmpeg中预留的滤镜 263
10.2.1 音频滤镜 263
10.2.2 视频滤镜 265
10.3 avfilter流程图 271
10.4 使用滤镜加LOGO操作 272
10.5 小结 275

教学资源推荐
作者: [美] 查尔斯·K.亚历山大(Charles K. Alexander) [美] 马修·N. O. 萨迪库(Matthew N. O. Sadiku)著
作者: (美)W. Alan Davis 著
作者: (美)Albert Malvino David J. Bates 著
参考读物推荐
作者: [美]弗兰克·D. 佩特鲁泽拉(Frank D. Petruzella) 著
作者: (美)Steven H. Voldman 著
作者: [美]哈肯·基洛卡(Hakan Gürocak)著