Android 音視頻開發 Android音视频开发

何俊林

  • 出版商: 電子工業
  • 出版日期: 2018-11-01
  • 定價: $594
  • 售價: 8.5$505
  • 語言: 簡體中文
  • 頁數: 468
  • 裝訂: 平裝
  • ISBN: 7121349965
  • ISBN-13: 9787121349966
  • 相關分類: Android
  • 無法訂購

買這商品的人也買了...

商品描述

近年來,直播、短視頻行業的相關業務發展迅猛,本書主要介紹其中涉及的Android音視頻開發相關技術。本書一共有11章,分別介紹了音視頻基礎知識、MediaPlayer、MediaPlayerService、StagefrightPlayer、NuPlayer、OpenMAX框架、FFmpeg項目、FFmpeg源碼分析及實戰、直播技術、H.264編碼及H.265編碼、視頻格式分析內容。希望本書能幫助讀者系統學習、化繁為簡,在Android音視頻開發的道路上不斷進步。本書適合具有一定Android開發基礎並且對音視頻技術方向感興趣的讀者閱讀。

作者簡介

何俊林,曾就職於愛奇藝,先後參與TV播放器業務和需求開發,以及TV新播放內核開發和維護。主要研究方向為多媒體、音視頻、Codec相關方向。長期在CSDN上堅持寫博客,2016獲得CSDN音視頻之星、年度博客之星。愛好開源,樂於研究和分享技術。同時運營公號“何俊林”,超過4w+人關注。

目錄大綱

目錄


第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