FFmpeg从入门到精通
- 定价:¥69.00
- 校园优惠价:¥34.50 (50折) (马上了解)
- 评分:
(已有1条评价)
- 电子书:FFmpeg从入门到精通
- 促销活动:
- 我要买:
基本信息
- 作者: 刘歧 赵文杰
- 丛书名: 电子与嵌入式系统设计丛书
- 出版社:机械工业出版社
- ISBN:9787111592204
- 上架时间:2018-3-23
- 出版日期:2018 年3月
- 开本:16开
- 版次:1-1
- 所属分类:计算机 > 图形图像、多媒体、网页制作 > 视频/音频/流媒体

【插图】

编辑推荐
音视频流媒体在生活中随处可见,音视频技术也日渐成为非常重要的技术,尤其是音视频处理。尽管有大量的开源软件可以帮助你做音视频处理,并提供了简单的操作接口,但是对于新手来说还是有些迷茫。
本书围绕着音视频处理的FFmpeg的发展过程、FFmpeg的组成、FFmpeg的命令行使用、FFmpeg的API使用等内容,由浅入深地介绍了使用FFmpeg进行音视频处理的方法,并辅以大量实例,从而帮助对音视频处理感兴趣的读者对FFmpeg有更多的了解。
通过阅读本书,你将学到:
FFmpeg的历史
FFmpeg的基本结构
FFmpeg的基本用法
使用FFmpeg进行日常的音视频处理工作的方法
使用FFmpeg的API进行音视频处理工作的细节
内容简介
作译者
目录
推荐序一
推荐序二
推荐序三
前言
第一部分 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
前言
在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。
序言
缘起
随着移动互联网的发展和网络基础设施的逐步升级,我们经历了从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社区,回答网友的提问。我不知道这是不是一种热爱,但可以肯定这很占用自己的时间。
媒体评论
随着计算机网络和多媒体技术的飞速发展,视频作为富媒体的主要元素,成为了信息传递的主要方式,深刻地影响着我们的生活。在互联网流量中,尤其是移动互联网中,视频流媒体的占比已经超过70%。但由于视频相关技术(如编解码、流媒体传输等)入门门槛较高,导致从事视频行业的高端人才数量无法满足行业的发展需要。
刘歧曾经和我一起工作过,也是生活中的朋友,他对技术的执著是我非常赏识和佩服的,同时他为FFmpeg社区在国内的发展做出了很大贡献。
本书由浅入深地介绍了FFmpeg的使用方法,帮助读者更好地理解和掌握音视频相关的实际应用;相信本书将对音视频行业发展起到推动作用,让更多的人参与到音视频行业的创新发展中。如作者在书中所说,“FF”代表的是“Fast Forward”,我也希望读者通过对本书的学习,成长速度可以fast,faster,fastest。
云帆加速联合创始人CTO扶凯
我与武爱敏、刘歧和赵文杰都来自蓝汛,生活中是挚友,多年来我也一直在从事视频编解码相关的工作,经常与他们有联系和交流学习的机会。回想起2008年,彼时我在蓝汛负责过一段时间的视频编解码工作,后来在土豆也负责CDN和视频编解码相关业务,这些技术大多都是基于 FFmpeg。然而,当年一直苦于市面上没有好的中文指导资料,相关技术知识只能从国外的书刊中寻找。
因此我非常期待有一些中文的刊物,能对FFmpeg相关的技术进行深入和系统的介绍。如果当年有这本书的话,我相信能省下我或其他人非常多的时间。目前,中国在音视频方面的流量每年都有60%以上的增速,所以无论对于从业者技能提升还是相关领域技术学习,这本书都非常值得读者期待。
可喜的是,近年来中国的音视频技术在国际上是占有一席之地的。比如,目前一些国外 CDN 公司都不支持目前国内主流的直播流技术(如 rtmp 和 httpflv 流技术),刚好这几位是SRS的作者或推动者——他们推动了整个中国的直播和编解码技术的发展,改变了整个行业。我在研究音视频分布式的大规模分布式转码技术时,与刘歧曾进行过深入的交流,对于他们的技术和实力是有目共睹的。值得一提的是,目前包括我们公司在内的中国众多点播直播领域企业,都在使用或者学习FFmpeg基于开源所提供的技术,以便为市场提供良好的服务。
我相信本书能对视频行业产生极为正面的影响,并且也一定能带动当下中国点播直播技术、H.265 编码技术和VR等技术获得更大的发展。他们编写这本 FFmpeg 的书,是对知识的尊重,是对价值的渴望。我希望从这本书开始,中国在视频领域的技术能逐步赶超国际水平,做一些创新甚至颠覆的事情。我强烈推荐这本书给大家,我能学习到很多,也希望你们受益。
熊猫TV CTO黄欢
FFmpeg是一个功能完备,稳定性强的音视频处理开源项目。但由于其庞大的工程量,复杂的系统构架,以及繁多的参数设置。让一些刚刚接触音视频开发的开发人员不知从何下手。本书由参数入手,细致地讲解了参数背后的原理。让开发人员可以由浅入深的了解音视频开发知识。从FFmpeg安装、转格式、转码起步,深入地分析了FFmpeg所支持的常用格式的结构,对于FLV、MP4 等常用文件格式,细致到每一位进行了详细的说明。编解码方面,本书也细致地讲解了各种编码标准,软硬编解码的使用和转编码中容易遇到的问题和误区。传输方面,不仅对于目前常用的直播点播进行了具体的分析,还对多路处理等问题进行了深入剖析。在图像以及音频处理方面,更是细致地解释了常用的处理操作。总体而言,本书为音视频开发入门铺垫了道路,也为深入理解音视频开发填平了坑点。
高升控股副总经理鄢涛
随着近几年直播、短视频等行业的兴起,流媒体技术越来越多地受到大家的重视。开源的FFmpeg系统,更是流媒体行业内大家学习和实践的最好工具。
刘歧从事流媒体行业多年,一路跳坑踩雷走过来,积累了丰富的行业和实战经验。本书从入门到实例,详细地介绍了在实践中的技术点,是初学者的带路导师,也是流媒体开发者不错的工具字典。期望通过本书,能让更多人更容易地参与到流媒体行业中来。
dotEngine创始人刘连响
FFmpeg被称作音视频应用程序的瑞士军刀,包含音视频采集、编码转化、音视频格式转化、视频滤镜、音频滤镜等功能,还可以进行视频裁剪、缩放、色域转换等一系列后期处理。可以说,无论你想要本地播片,还是转换视频格式,亦或是利用网络看视频,FFmpeg都可以胜任。三大视频播放流派MPC、MPlayer和VLC都和FFmpeg脱不开关系,而Chrome这样的能播放视频的浏览器,底层也是用了FFmpeg来处理音视频。
FFmpeg功能强大的同时也带来了复杂性,命令行参数众多,加上没有系统的教程,我也一直对学习FFmpeg的使用心怀抗拒,在经历了几次到处求命令行之后,最后终于花了一天的时间把FFmpeg官方的文档都看了一遍,在经历了一些练习后,基本能解决工作中遇到的FFmpeg的大部分问题。一些解决不了的问题会请教大师兄,这时候大师兄往往二话不说扔出一个命令行来,留下我辈后来者深深佩服。有些技术只会用一时,有些技术确可以用几十年,FFmpeg是可以用几十年的技术,花上几天学一个可以用几十年的技术是何等高的学习“性价比”。
这本书浅显易懂并能学以致用,只需要对音视频的编码和容器有基本了解就可以快速上手。首先总体讲了FFmpeg的包含的模块,编译安装,接下来对常用的命令行参数进行了讲解,最后部分针对API做了讲解,对于那些有命令行无法完成的任务和一定C语言开发能力的开发者来说,这部分是一个非常好的API开发入门。相信你跟着本书的示例代码练习下来之后会有跟我一样的感叹:原来用FFmpeg做出一个画中画效果和一个多宫格的播放效果这么简单。
大师兄常说的一句话是:独学而无友,则孤陋而寡闻。作为一本系统介绍FFmpeg知识的书,相信本书会是你的良师益友。