内容推荐 本书详细介绍了开源音视频处理软件FFmpeg的使用,按照所讲述的内容及读者的不同层次,本书划分为上下两篇。上篇为基础与参数详解,介绍了FFmpeg的基本组成部分、工具使用,以及封装、转码、流媒体、滤镜和设备操作。下篇为API使用及开发,介绍了FFmpeg封装、编解码和滤镜部分的API使用操作,相关操作均以实例方式进行说明,包括新旧API的操作方法和异同,并给出了大量的API使用、自定义功能模块、基于FFmpeg的API开发自己的播放器的示例,以及其在实际开源软件中的应用等。 本书不仅适合音视频流媒体处理的研发人员、对音视频技术应用和实时音视频通信感兴趣的技术人员,还适合高等院校计算机相关专业的学生阅读。 作者简介 刘歧,FFmpeg官方代码维护者之一,十余年一线技术研发与技术管理经验,人称“大师兄”。现任职于OnVideo公司,担任CTO。公司联合创立人,负责在线音视频云编辑与创作平台的开发和建设。曾任职蓝汛、高升、金山云等公司,担任视频部门架构师及技术专家。 目录 上篇 基础与参数详解 第1章 多媒体基础 1.1 从现实世界到数字世界 1.1.1 颜色和图像 1.1.2 电影、电视和视频 1.1.3 音频 1.1.4 音视频封装、传输和未来 1.2 视频图像像素点的数据格式 1.2.1 图像的位深 1.2.2 FourCC 1.2.3 灰度模式表示 1.2.4 YUV色彩表示 1.2.5 RGB色彩表示 1.2.6 HSL与HSV色彩表示 1.3 视频逐行和隔行扫描、NTSC与PAL制式 1.3.1 逐行与隔行扫描 1.3.2 NTSC制式 1.3.3 PAL制式 1.4 帧率、PTS和DTS 1.5 图像分辨率与宽高比 1.6 图像的色彩空间 1.7 音频采样数据格式 1.7.1 声道 1.7.2 采样率 1.7.3 采样位深 1.7.4 带宽计算 1.8 小结 第2章 FFmpeg简介 2.1 FFmpeg的发展历史 2.2 FFmpeg的基本组成 2.2.1 封装/解封装模块AVFormat 2.2.2 编/解码模块AVCodec 2.2.3 滤镜模块AVFilter 2.2.4 设备模块AVDevice 2.2.5 图像转换模块swscale 2.2.6 音频转换模块swresample 2.2.7 编解码工具ffmpeg 2.2.8 播放器ffplay 2.2.9 多媒体分析器ffprobe 2.3 不同平台下的编译 2.3.1 Windows平台编译FFmpeg 2.3.2 Linux平台编译FFmpeg 2.3.3 macOS平台编译FFmpeg 2.4 FFmpeg特性的选择与定制 2.4.1 编码器支持 2.4.2 解码器支持 2.4.3 封装支持 2.4.4 解封装支持 2.4.5 通信协议支持 2.5 小结 第3章 FFmpeg工具使用基础 3.1 ffmpeg常用命令 3.1.1 封装转换 3.1.2 解码和编码 3.1.3 转码流程 3.2 ffprobe常用命令 3.2.1 ffprobe常用参数 3.2.2 ffprobe使用示例 3.3 ffplay常用命令 3.3.1 ffplay常用参数 3.3.2 ffplay高级参数 3.3.3 ffplay的数据可视化分析应用 3.3.4 ffplay快捷键 3.4 小结 第4章 封装与解封装 4.1 视频文件转MP4 4.1.1 MP4格式标准介绍 4.1.2 FragmentMP4与CMAF 4.1.3 MP4分析工具 4.1.4 MP4在FFmpeg中的Demuxer 4.1.5 MP4在FFmpeg中的Muxer 4.2 视频文件转FLV 4.2.1 FLV文件标准介绍 4.2.2 FLVMuxer参数说明 4.2.3 文件转FLV举例 4.2.4 生成带关键索引的FLV 4.2.5 FLV文件格式分析工具 4.3 视频文件转MPEG-TS 4.3.1 MPEG-TS格式简介 4.3.2 MPEG-TSMuxer参数说明 4.3.3 MPEG-TS格式分析工具 4.4 视频文件转HLS 4.4.1 HLS标准的M3U8介绍 4.4.2 HLSMuxer参数 4.4.3 HLSMuxer举例说明 4.5 视频文件切片 4.5.1 segment切片参数 4.5.2 segment切片举例 4.5.3 使用ss与t参数切片 4.6 视频文件的音视频流抽取 4.6.1 提取AAC音频流 4.6.2 提取H.264视频流 4.6.3 提取H.265视频流 4.7 系统资源使用情况 4.8 小结 第5章 编码与转码 5.1 软编码H.264 5.1.1 x264编码参数简介 5.1.2 H.264编码举例 5.2 硬件加速 5.2.1 基于OS的硬件加速方案简介 5.2.2 NVIDIAGPU硬编解码 5.2.3 IntelQSV硬编解码 5.2.4 RaspberryPi硬编解码 5.2.5 macOS系统硬编解码 5.2.6 其他加速方案简介 5.3 输出MP3 5.3.1 MP3编码参数介绍 5.3.2 MP3的编码质量设置 5.3.3 平均码率编码ABR参数 5.4 输出AAC 5.4.1 AAC编码器操作 5.4.2 FDK-AAC 5.4.3 高质量AAC设置 5.4.4 AAC音频质量对比 5.5 系统资源使用情况 5.6 小结 第6章 流媒体技术 6.1 录制与发布RTMP流 6.1.1 RTMP参数说明 6.1.2 RTMP参数举例 6.2 录制与发布RTSP流 6.2.1 RTSPdemuxer参数介绍 6.2.2 RTSPdemuxer参数使用举例 6.2.3 RTSPdemuxer/muxer的一些小说明 6.3 录制HTTP流 6.3.1 HTTP参数说明 6.3.2 HTTP参数举例 6.4 录制与发布UDP/TCP流 6.4.1 TCP与UDP参数 6.4.2 TCP/UDP参数使用举例 6.4.3 TCP/UDP使用小结 6.5 多路流输出 6.5.1 管道方式输出多路流 6.5.2 tee封装格式输出 6.5.3 tee协议输出多路流 6.6 DASH流输出 6.6.1 参数介绍 6.6.2 参数举例 6.7 HDS流输出 6.7.1 参数说明 6.7.2 HDS使用举例 6.8 小结 第7章 bitstream过滤器 |