FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等
主要功能:多媒体视频处理工具FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。
《ffmpeg基础库编程开发》482页
目录
第一章 多媒体概念介绍 6
1.1视频格式 6
1.1.1常见格式 6
1.2音频格式 9
1.2.1常见格式 9
1.2.2比较 15
1.3字幕格式 15
1.3.1外挂字幕与内嵌字幕的阐述 15
1.3.2外挂字幕视频与内嵌字幕视频的画面比较 15
1.3.3外挂字幕的三种格式 15
1.4采集录制和播放渲染 16
1.4.1视频采集 16
1.
4.2视频录制 17
1.4.3视频渲染 17
1.5编解码器 18
1.6容器和协议 19
1.6.1容器格式和编码格式 19
1.6.2协议 26
1.6.2.1 视频协议 26
1.6.2.2 音频协议. 26
1.6.2.3 上层通讯协议 27
1.7常用概念介绍 27
1.7.1硬解 27
1.7.2 IBP帧 28
1.7.3 DTS和PTS 31
1.7.4 分辨率 31
1.7.5 码率 32
1.7.6 帧率 32
1.7.7 RGB和YUV 32
1.7.8 实时和非实时 32
1.7.9 复合视频和s-video 32
1.7.10 硬件加速 32
1.7.11 FFmpeg Device 32
第二章 FFmpeg框架 34
2.1 FFmpeg概述 34
2.1.1简介 34
2.1.2功能 34
2.1.3模块组成 35
2.1.4命令集 35
2.2 媒体播放器三大底层框架 37
第三章 编译及简单应用 41
3.1 FFmpeg库编译和入门介绍 41 41
3.2 流媒体数据流程讲解 49
3.3 简单应用 51
3.4 SDL( Simple Direct Layer) 55
3.4.1 SDL显示视频 55
3.4.2 SDL显示音频 55
3.5 ffmpeg程序的使用(ffmpeg.exe,ffplay.exe,ffprobe.exe) 56
3.5.1 ffmpeg.exe 56
3.5.2 ffplay.exe 56
3.5.3 ffprobe.exe 56
第四章 数据结构 57
4.1 AVCodec结构体 59
4.2 AVCodecContext结构体 59
4.3 AVInputFormat结构体 60
4.4 AVFormatContext结构体 61
4.5 MovContext结构体 62
4.6 URLProtocol结构体 62
4.7 URLContext结构体 63
4.8 AVIOContext结构体(老版本为:ByteIOContext) 63
4.9 AVStream结构体 64
4.10 MOVStreamContext 结构体 65
4.11 AVPacket 结构体 66
4.12 AVPacketList 结构体 67
4.13 AVFrame结构体 67
第五章 重要模块 76
5.1 libavutil公共模块 76
1 文件列表 76
2 common.h 文件 76
3 bswap.h 文件 78
4 rational.h 文件 79
5 mathematics.h 文件 80
6 avutil.h 文件 80
5.2 libavcodec编解码模块 82
1 文件列表 82
2 avcodec.h 文件 82
3 allcodec.c 文件 87
4 dsputil.h 文件 87
5 dsputil.c 文件 88
6 utils_codec.c 文件 88
7 imgconvert_template.h 文件 99
8 imgconvert.c 文件 121
9 msrle.c 文件 164
10 turespeech_data.h 文件 171
11 turespeech.c 文件 174
5.3 libavformat容器模块 184
1 文件列表 184
2 avformat.h 文件 184
3 allformat.c 文件 190
4 cutils.c 文件 190
5 file.c 文件 192
6 avio.h 文件 194
7 avio.c 文件 196
8 aviobuf.c 文件 200
9 utils_format.c 文件 209
10 avidec.c 文件 220
5.4 libswscale视频色彩空间转换 243
5.5 libswresample音频重采样 243
5.6 libavfilter音视频滤器 243
5.7 libavdevice设备输入和输出容器 243
5.8 libpostproc视频后期处理 243
第六章 播放器 243
6.1 视频播放器 243
6.1.1 ffmpeg库的配置 243
6.1.2 一个简单的视频播放器 244
6.2 音频播放器 247
6.3 一个完整的播放器–ffplay 253
6.3.1 ffplay流程图 253
6.3.2 ffplay源码剖析 254
第七章 应用开发 275
7.1 ffmpeg库的使用:编码 275
第八章 关键函数介绍 280
8.1 avformat_open_input 280
8.2 avcodec_register_all() 281
8.3 av_read_frame() 283
8.4 avcodec_decode_video2() 283
8.5 transcode_init() 283
8.6 transcode() 294
第九章 ffmpeg相关工程 301
9.1 ffdshow 301
ffdshow 源代码分析1 : 整体结构 302
ffdshow 源代码分析 2: 位图覆盖滤镜(对话框部分Dialog) 304
ffdshow 源代码分析 3: 位图覆盖滤镜(设置部分Settings) 312
ffdshow 源代码分析 4: 位图覆盖滤镜(滤镜部分Filter) 317
ffdshow 源代码分析 5: 位图覆盖滤镜(总结) 322
ffdshow 源代码分析 6: 对解码器的dll的封装(libavcodec) 322
ffdshow 源代码分析 8: 视频解码器类(TvideoCodecDec) 344
ffdshow 源代码分析 9: 编解码器有关类的总结 352
9.2 LAV filters 357
LAV Filter 源代码分析 1: 总体结构 357
LAV Filter 源代码分析 2: LAV Splitter 358
LAV Filter 源代码分析 3: LAV Video (1) 382
LAV Filter 源代码分析 4: LAV Video (2) 400
9.3 MPlayer 427
9.3.1 Mplayer支持的格式 427
9.3.2 Mplayer 中头文件的功能分析 427
9.3.3 MPlayer.main 主流程简要说明 428
9.3.4 Mplayer源码分析 429
第十章 开发实例 436
第十一章 mp4文件封装协议分析 436
11.1 概述 436
11.2 mp4的物理结构 436
11.3 数据的组织结构 437
11.4 mp4的时间结构 437
11.5 文件结构分析 438
11.5.1 File Type Box(ftyp) 438
11.5.2 Movie Box(moov) 438
第十二章 flv 文件格式分析 457
12.1 概述 457
12.2 文件总体结构 457
12.3 文件结构分析 458
12.3.1 flv文件头的结构 458
12.3.2 body主体结构 459
附录A:常见问题 465
1 ffmpeg 从内存中读取数据 465
2 MFC中使用SDL播放音频没有声音的解决方法 465
附录B:经典代码示例 466
附录C:ffmpeg参数中文详细解释 477
附录D:ffplay的快捷键以及选项 479
附录E: ffmpeg处理rtmp流媒体 481