書籍信息
作譯者:何俊林
出版時間:2018-11千 字 數:655版次:01-01頁 數:468
開本:16開裝幀:I S B N :9787121349966
換版:
紙質書定價:¥99.0
內容簡介
本書一共有11章,分別介紹了音視頻基礎知識、MediaPlayer、MediaPlayerService、StagefrightPlayer、NuPlayer、OpenMAX框架、FFmpeg項目、FFmpeg源碼分析及實戰、直播技術、H.264編碼及H.265編碼、視頻格式分析內容。希望本書能幫助讀者系統學習、化繁為簡,在Android音視頻開發的道路上不斷進步。本書適合具有一定Android開發基礎並且對音視頻技術方向感興趣的讀者閱讀。
圖書目錄
第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