音视频学习路径

第1章 音视频基础知识 1
1.1 视频编码 1
1.2 音频编码 2
1.3 多媒体播放组件(Android、iOS) 2
1.4 常见的多媒体框架及解决方案 3
1.5 相关知识点 4
1.5.1 帧率 4
1.5.2 分辨率 4
1.5.3 刷新率 4
1.5.4 编码格式 4
1.5.5 封装格式 4
1.5.6 码率 5
1.5.7 画质与码率 5
1.5.8 DTS与PTS 5
1.5.9 YUV与RGB 5
1.5.10 视频帧及音频帧 5
1.5.11 量化精度 6
1.5.12 采样率 6
1.5.13 声道 6
第2章 常用的系统播放器MediaPlayer 8
2.1 状态图及生命周期 8
2.2 从创建到setDataSource过程 12
2.2.1 从创建到setDisplay过程 12
2.2.2 创建过程 13
2.2.3 setDataSource过程 16
2.2.4 setDisplay过程 20
2.3 开始prepare后的流程 22
2.4 C++中MediaPlayer的C/S架构 31
第3章 管理调度的服务者MediaPlayerService 40
3.1 Client/Server通过IPC的通信流程图 40
3.2 相关联的类图 42
3.3 产生过程 43
3.4 添加服务的过程 48
3.5 通过BinderDriver和MediaPlayer通信的过程 50
3.6 创建播放器 55
3.7 建立StageFright层交互 58
第4章 StagefrightPlayer(AwesomePlayer) 60
4.1 AwesomePlayer构造过程 60
4.2 AwesomePlayer使用MediaExtractor进行数据解析的过程 66
4.3 AwesomePlayer解码过程 69
4.3.1 AwesomePlayer中的prepare过程 69
4.3.2 初始化音视频解码器过程 73
4.3.3 使用OMXCodec的解码过程 75
4.4 AwesomePlayer的渲染输出过程 80
4.4.1 用一张图回顾数据处理过程 80
4.4.2 视频渲染器构建过程 81
4.4.3 将音频数据放到Buffer的过程 87
4.4.4 AudioPlayer在AwesomePlayer中的运行过程 91
4.4.5 音视频同步 93
4.4.6 音视频输出 96
4.5 概要总结 97
第5章 流媒体播放的新生力量NuPlayer 98
5.1 NuPlayer整体结构 98
5.2 NuPlayer的构建过程 100
5.3 NuPlayer的数据解析模块 102
5.4 NuPlayer的解码???107
5.5 NuPlayer的渲染模块 109
第6章 OpenMAX(OMX)框架 118
6.1 Codec部分中的AwesomePlayer到OMX服务 118
6.1.1 OpenMAX与StageFright框架层级的关系 118
6.1.2 OMX的初始化流程 120
6.1.3 OMX中NodeInstance列表的管理 127
6.1.4 OMX中NodeInstance节点的操作 127
6.1.5 总结AwesomePlayer到OMX服务过程 130
6.2 Codec部分中的OMXCodec与OMX事件回调流程 131
6.2.1 OMXCodec与OMX callback事件的处理时序图 132
6.2.2 如何从OMX中分发事件到OMXCodec 133
6.2.3 缓冲区更新过程 135
6.2.4 消息回调 137
6.3 MediaCodec相关知识 139
6.3.1 MediaCodec的基本认识 139
6.3.2 从创建到Start过程 148
6.3.3 MediaCodec到OMX框架过程 154
6.3.4 MediaCodec硬解码 158
第7章 FFmpeg项目 161
7.1 FFmpeg简介 161
7.2 在Windows下编译FFmpeg 163
7.2.1 MSYS2 164
7.2.2 Yasm 164
7.2.3 开始编译FFmpeg-3.1.3 166
7.2.4 创建shell编译脚本 167
7.2.5 编译动态库.so 169
7.2.6 编译静态库.a 171
7.3 在Linux下编译FFmpeg 172
7.3.1 在/etc/profile.d下配置环境变量 172
7.3.2 开始编译FFmpeg-3.1.3 174
7.3.3 编写shell脚本 175
7.3.4 编译动态库.so 176
7.3.5 编译静态库.a 178
7.4 在Mac OS下编译FFmpeg 179
7.4.1 下载源码及配置环境变量 179
7.4.2 开始编译FFmpeg-3.1.3 183
7.4.3 编写shell脚本 183
7.4.4 编译动态库.so 185
7.4.5 编译静态库.a 187
7.5 FFmpeg常用命令 189
7.5.1 改变帧率、码率和文件大小 189
7.5.2 调整视频分辨率 190
7.5.3 裁剪/填充视频 191
7.5.4 翻转和旋转视频 193
7.5.5 模糊和锐化视频 196
7.5.6 画中画 197
7.5.7 在视频上添加文字 201
7.5.8 文件格式转换 205
7.5.9 时间操作 207
第8章 FFmpeg源码分析及实战 208
8.1 FFmpeg常用结构体分析 208
8.1.1 AVFormatConext 209
8.1.2 AVInputFormat 211
8.1.3 AVStream 212
8.1.4 AVCodecContext 215
8.1.5 AVPacket 216
8.1.6 AVCodec 218
8.1.7 AVFrame 219
8.1.8 AVIOContext 222
8.1.9 URLProtocol 223
8.1.10 URLContext 224
8.2 FFmpeg关键函数介绍 225
8.2.1 av_register_all函数 225
8.2.2 avformat_alloc_context函数 226
8.2.3 avio_open函数 226
8.2.4 avformat_open_input函数 229
8.2.5 avformat_find_stream_info函数 232
8.2.6 av_read_frame函数 246
8.2.7 av_write_frame函数 252
8.2.8 avcodec_decode_video2函数 256
8.3 FFmpeg案例(代码实现) 264
8.3.1 利用FFmpeg转换格式 264
8.3.2 在实时流中抓取图像 269
8.3.3 在视频中加入水印 277
8.3.4 FFmpeg音频解码 288
8.3.5 FFmpeg视频解码 300
8.4 FFPlay原理 308
8.4.1 注册所有容器格式和Codec 309
8.4.2 打开流文件 309
8.4.3 读取数据 311
8.4.4 保存数据 318
8.4.5 音视频同步 322
8.4.6 音视频输出 326
第9章 直播技术 328
9.1 直播原理 328
9.2 直播架构 328
9.3 直播过程 329
9.3.1 采集数据 329
9.3.2 渲染处理 332
9.3.3 编码数据 333
9.3.4 推流 335
9.3.5 CDN分发 338
9.3.6 拉流 341
9.3.7 播放流数据 341
9.3.8 直播推流完整案例 343
9.4 流媒体服务器搭建 377
9.5 FFmpeg推流到流媒体服务器的过程 384
9.6 直播优化那些事 387
9.6.1 卡顿优化 387
9.6.2 延时优化 388
9.6.3 数据代理优化 389
9.6.4 首屏秒开优化 390
9.6.5 弱网优化 391
9.6.6 运营商劫持优化 391
9.6.7 CDN节点优化 393
第10章 H.264编码及H.265编码 395
10.1 H.264编码框架 395
10.2 H.264编码原理 395
10.3 H.264码流分析 397
10.3.1 H.264编码格式 397
10.3.2 NAL Header 397
10.3.3 H.264的传输 399
10.3.4 H.264码流结构 399
10.3.5 H.264的Level和Profile说明 406
10.4 H.265编码框架 408
10.4.1 背景知识 408
10.4.2 H.265码流结构 409
第11章 视频格式分析 414
11.1 MP4格式分析 414
11.1.1 Box结构 415
11.1.2 MP4总体结构 416
11.1.3 movie(moov)box 416
11.1.4 media box 418
11.1.5 sample table(stbl)box 420
11.2 FLV格式分析 422
11.2.1 FLV文件结构 422
11.2.2 File Header(文件头) 422
11.2.3 Body 423
11.2.4 Tag 423
11.3 F4V格式分析 428
11.3.1 file type box 429
11.3.2 movie box 430
11.3.3 movie header box 430
11.3.4 track box 430
11.3.5 media box 431
11.3.6 media information box 433
11.3.7 sample table box 433
11.4 TS格式分析 437
11.4.1 TS格式介绍 437
11.4.2 TS流包含的内容 438
11.4.3 TS包头解析 438
11.4.4 TS包传输部分 440
11.4.5 节目专用信息PSI(Program Specific Information) 440
11.5 AVI格式分析 444
11.5.1 AVI整体结构 445
11.5.2 AVI信息块('hdrl' LIST块) 446
11.5.3 AVI数据块('movi' LIST块) 447
11.5.4 AVI索引块('idxl'子块) 448
11.6 ASF格式分析 448
11.6.1 认识ASF 448
11.6.2 ASF文件整体结构 449

?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容