Android音視頻開發
  • 推薦2
  • 收藏9
  • 瀏覽2.2K

Android音視頻開發

何俊林 (作者) 

  • 書  號:978-7-121-34996-6
  • 出版日期:2018-10-18
  • 頁  數:468
  • 開  本:16(185*235)
  • 出版狀態:上市銷售
  • 維護人:付睿
電子書 ¥69.00
購買電子書
紙質版 ¥99.00
近年來,直播、短視頻行業的相關業務發展迅猛,本書主要介紹其中涉及的Android音視頻開發相關技術。本書一共有11章,分別介紹了音視頻基礎知識、MediaPlayer、MediaPlayerService、StagefrightPlayer、NuPlayer、OpenMAX框架、FFmpeg項目、FFmpeg源碼分析及實戰、直播技術、H.264編碼及H.265編碼、視頻格式分析內容。希望本書能幫助讀者系統學習、化繁為簡,在Android音視頻開發的道路上不斷進步。
本書適合具有一定Android開發基礎并且對音視頻技術方向感興趣的讀者閱讀。
本書詳解了Android音視頻開發相關技術,從原理到案例展示了音視頻開發的獨特魅力,希望幫助讀者在Android音視頻開發的道路上不斷進步。
前  言


從來沒想到自己能出一本書。
寫書是一件很考驗人耐心的事情,從打算寫一本書開始,我心里每時每刻都像有一塊大石頭壓著一樣。一要保證專業性,二要保證質量,同時還要考慮怎么表達才能讓別人明白自己的意思,所以寫書并沒有那么簡單。
近年來,直播、短視頻行業的相關業務發展迅猛,很多人希望學習其中涉及的Android音視頻開發相關知識,而Android音視頻開發的難度相對較高,這讓很多Android開發者望而卻步。例如,音視頻開發中很多有特色的或者核心的模塊使用NDK開發,而NDK開發又主要使用C/C++語言編寫代碼,這對于使用Java語言的Android開發者來說有門檻。
我為什么要寫這本書呢?對于音視頻相關技術,網絡上遍布零散的知識點,但沒有一個成型的知識體系。很多朋友想學習和了解Android音視頻開發,卻不知道如何下手,所以我希望將自己的知識和經驗整理成書,幫助讀者系統學習、化繁為簡,讓大家在Android音視頻開發的道路上不斷進步。
本書概要
第1章:介紹了音視頻基礎知識,通過本章學習可以了解一些音視頻的基礎概念,讓讀者更好地系統掌握音視頻相關知識。
第2章:介紹了Android應用層使用的系統播放器MediaPlayer。
第3章:介紹了Android多媒體管理調度的服務者MediaPlayerService,以及如何為多媒體播放提供服務。
第4章:介紹了Android系統中的StagefrightPlayer。在Android系統5.1版本之前,其扮演了重要的角色。
第5章:介紹了Android系統中的NuPlayer,其是流媒體播放的新生力量。在Android系統5.1版本之后(包含5.1版本),NuPlayer基于StagefrightPlayer的基礎類進行構建,利用了更底層的ALooper/AHandler機制來異步解碼播放。
第6章:介紹了OpenMAX(OMX)框架相關內容。OpenMAX是一個多媒體應用程序的標準,涉及OpenMAX IL API在Android應用程序、多媒體框架和編/解碼庫及其支持的組件(比如sources和sinks)之間建立統一的接口。
第7章:介紹了FFmpeg庫在Windows、Mac OS及Linux下編譯并移植的內容,同時介紹了FFmpeg常用的處理音視頻的命令。
第8章:介紹了FFmpeg源碼分析及實戰開發案例。
第9章:介紹了直播技術,主要涉及直播原理、采集數據、編碼、推流、播放等。同時提供了一個直播推流完整案例,可以實現一個簡單的直播App。本章還介紹了直播過程中的優化方法,可幫助提升直播體驗。
第10章:介紹了H.264碼流結構及H.265碼流結構。在音視頻開發中,可以通過分析數據有無特殊性問題及異常問題來進行排查,幫助定位、修復問題。
第11章:介紹了常見的視頻封裝格式,以及對封裝格式的原理和內部結構進行了分析。
讀者對象
本書適合具有一定Android開發基礎并且對音視頻技術方向感興趣的讀者閱讀,包括:
? 從事Android多媒體開發工作的人。
? 從事音視頻開發工作的人。
? 從事跨平臺Android播放器開發工作的人。
? 從Android開發想進階至多媒體、音視頻、直播領域的人。
? 從事Android ROM開發中維護多媒體播放框架工作的人。
? 對Android音視頻、播放器、直播技術感興趣的其他相關人士。
勘誤和支持
由于作者的水平有限,書中難免會出現一些錯誤或者不準確的地方,懇請廣大讀者批評指正。
另外,我在自己的微信公眾號“何俊林”中特意添加了一個新的菜單入口,專門用于展示書中的問題,歡迎讀者查看。
如果在閱讀本書的過程中,讀者有任何疑問或希望和我交流,可以在公眾號后臺留言或者發郵件到[email protected],我會一一回復。
致謝
首先要感謝我的家人,謝謝你們在寫書期間默默支持著我,還要感謝電子工業出版社博文視點公司付睿老師的耐心校稿,以及感謝同行朋友與我就細節問題進行討論和對本書的審校。沒有你們,就沒有本書的誕生,謝謝你們所有人。
讀者服務
輕松注冊成為博文視點社區用戶(www.mmzxjp.buzz),掃碼直達本書頁面。
? 提交勘誤:您對書中內容的修改意見可在 提交勘誤 處提交,若被采納,將獲贈博文視點社區積分(在您購買電子書時,積分可用來抵扣相應金額)。
? 交流互動:在頁面下方 讀者評論 處留下您的疑問或觀點,與我們和其他讀者一同學習交流。
頁面入口:http://www.mmzxjp.buzz/34996

目錄

目  錄


第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

讀者評論

下載資源

電子書版本

  • Epub

圖書類別

相關圖書

Android進階解密

劉望舒 (作者)

本書是一本Android進階書籍,主要針對Android 8.0系統源碼并結合應用開發相關知識進行介紹。本書共分為17章,從3個方面來組織內容。<br>第一方面...

¥69.00

Android自定義控件開發入門與實戰

啟艦 (作者)

在Android中,官方提供的控件是非常有限的,而我們所面臨的需求卻是多樣的。大家在工作中難免會接觸到自定義控件的需求,但系統講解自定義控件知識的書籍卻少之又少...

¥99.00

深入剖析Android新特性

強波 (作者)

本書對最近幾個版本(5.0 ~ 8.0)的主要新增功能進行整理和解析,本書的重點不僅僅是講解這些新增功能特性的外部行為,而是在結合AOSP的源碼基礎上,解析這些...

¥79.00

Android應用開發進階

范磊 (作者)

本書為Android應用開發進階的參考用書,旨在幫助Android開發者能夠快速有效地掌握Andriod應用開發進階相關的知識點。本書內容為Android應用開...

¥89.00

Android組件化架構

曾家樂 (作者)

本書首先介紹Android組件化開發的基礎知識,剖析組件化的開發步驟和常見問題,探究組件化編譯原理和編譯優化措施。其次在項目架構上,介紹如何組織團隊來使用組件化...

¥79.00

揭秘Kotlin編程原理

封亞飛 (作者)

Kotlin在今年的Google I/O大會上被確定為Android開發的一類語言,從而引發了大家的學習熱情。本書詳細介紹了Kotlin的程序結構、變量與常量、...

¥79.00
国际官方棋牌下载中心 快乐十分投注表图 福建十一选五任选推荐 手机赚钱日赚300元 股票行情在线 pk10官网开奖直播 广东快乐10分稳赢 炒股软件哪个好用 山西快乐10分杀码公式 体彩环岛赛可以搞鬼吗 青海十一选五体彩怎么看