1. 程式人生 > >基於NDK、C++、FFmpeg的android視訊播放器開發實戰-夏曹俊-專題視訊課程

基於NDK、C++、FFmpeg的android視訊播放器開發實戰-夏曹俊-專題視訊課程

基於NDK、C++、FFmpeg的android視訊播放器開發實戰—1796人已學習
課程介紹    
201803131704097881.png
    課程包含了對流媒體(拉流)的播放,演示了播放rtmp的香港衛視,支援rtsp攝像頭和http網路視訊的播放,支援訪問本地的視訊檔案,並精確顯示和控制播放進度: 1講解如何編譯Android平臺的ffmpeg庫,使其支援neon技術和硬解碼,並測試效能 2使用opengles的NDK shader高效播放yuv視訊,不耗費cpu效能更優(GPU) 3程式碼支援硬解碼(省電不耗cpu)和多執行緒解碼(高效能每秒解碼240幀1080p) 4支援網路流媒體(rtmp,rtsp,http)可直接拉流播放電視並支援rtsp攝像頭訪問 5課程將設計模式應用到實踐 - 觀察者,構建者,門面,代理,介面卡,單件模式
課程收益

    1 課程由淺入深,原理講解+程式碼實操演示,並提供全部課程原始碼 2 講解如何編譯Android平臺的ffmpeg庫,使其支援neon和硬解碼,並測試效能 3 使用opengles的NDK shader高效播放yuv視訊,不耗費cpu效能更優
講師介紹
    夏曹俊 更多講師課程
    夏曹俊:南京捷帝科技有限公司創始人,南京大學計算機碩士畢業,有15年c++跨平臺專案研發的經驗,領導開發過大量的c++虛擬模擬,計算機視覺,嵌入式影象處理,雲安全審計專案,比賽鷹眼系統,主編出版過《C++實訓教程》,並同時熟悉php,c#,java,安卓專案研發。
課程大綱

  第1章:課程介紹及音視訊基礎知識
    1. 課程介紹(由於平臺附件大小限制,請購買課程後加群 23304930下載全部原始碼)  18:06
    2. 音視訊基礎知識Mpeg4封裝格式音視訊編碼格式講解  10:15
    3. 音視訊解封裝和解碼原理分析  18:02
    4. 圖形畫素格式RGB和YUV格式分析  15:36
    5.
PCM音訊取樣率_通道_planar等格式引數分析
  8:37
    6. MP4標準和h264格式的NAL的GOP分析(下載課件是ppt)  15:53
  第2章:AndroidStudio開發工具和開發環境準備
    1. 開發所用到的工具和sdk介紹  7:29
    2. AndroidStudio開發工具安裝使用講解  9:22
    3. Android SDK目錄內容分析  4:59
    4. AndroidNDK工具目錄功能分析  5:43
    5. 安卓模擬器安裝和第一個c++安卓程式編譯執行  8:41
  第3章:Android NDK交叉編譯FFMpeg並新增測試AS專案
    1. 安卓NDK相關概念ABI、NEON、JNI和CMAKE分析  12:32
    2. NDK中CPU的應用二進位制介面ABI  9:00
    3. ubuntu虛擬機器及常用工具安裝並配置samba共享目錄  19:10
    4. ffmpeg原始碼下載在android下的編譯引數分析講解  12:47
    5. 在ubuntu下交叉編譯ffmpeg的android版本庫  20:28
    6. ffmpeg通用編譯bash指令碼編寫、硬解碼、neon、多執行緒解碼效能對比  24:19
    7. AndroidStudio專案配置許可權、jni庫路徑、ABI和CMake引數和講解  7:56
    8. cmake配置(匯入庫、標頭檔案、連結)分析  10:44
    9. 建立支援ffmpeg的AndroidStudio專案並呼叫其介面在介面顯示庫配置資訊  24:19
    10. JNI和c傳遞檔案路徑並設定app的讀寫許可權  17:51
  第4章:FFmpeg解封裝(C++ NDK)
    1. ffmpeg SDK軟硬解碼流程說明  5:08
    2. ffmpeg音視訊解封裝用到的函式和結構體詳解  10:11
    3. avformat_open_input函式詳解並示例開啟mp4檔案  17:54
    4. AVFormatContext結構分析和清理程式碼示例  8:23
    5. avformat_find_stream_info探測獲取封裝上下文的格式資訊  9:04
    6. AVStream和AVCodecParameters分析  13:16
    7. 通過遍歷獲取AVStream音視訊流資訊並列印引數  16:08
    8. 通過av_find_best_stream獲取音視訊流索引  4:23
    9. av_read_frame讀取幀資料函式分析和產生的空間問題分析  7:07
    10. AVPacket結構解析空間申請-初始化-複製-引用計數函式講解  10:27
    11. av_seek_frame改變播放進度函式詳解  8:37
    12. av_read_frame和av_seek_frame程式碼示例並分析記憶體佔用和清理情況  10:04
  第5章:FFmpeg軟硬解和多執行緒解碼(C++ NDK)
    1. AVCodecContext解碼上下文初始化講解和視訊解碼器開啟的程式碼演示  19:32
    2. 開啟音訊解碼器上下文  5:14
    3. AVFrame格式解析和空間處理函式  9:37
    4. avcodec_send_packet和avcodec_receive_frame函式講解  7:22
    5. 音視訊多執行緒解碼程式碼演示  9:06
    6. 音視訊解碼效能測試neon單執行緒和八執行緒解碼測試程式碼  13:56
    7. ffmpeg呼叫MediaCodec實現硬解碼程式碼演示  4:55
  第6章:FFMpeg音訊重取樣和視訊格式轉換和顯示
    1. sws_getContext和sws_scale畫素格式和尺寸轉換函式講解  12:43
    2. sws_scale畫素格式轉換程式碼演示  15:45
    3. 音訊重取樣SwrContext格式和swr_convert相關函式詳解  5:17
    4. swr_init音訊重取樣上下文初始化和swr_convert音訊重取樣程式碼示例  17:08
    5. 分析GLSurfaceView和NDK介面直接顯示RGB視訊資料相關函式  9:34
    6. 使用NDK通過GLSurfaceView雙緩衝空間複製完成視訊的播放  22:31
    7. 安卓視訊播放視窗去掉標題欄、全屏、橫屏  6:42
  第7章:OpenSLES音訊播放
    1. OpenSLES播放音訊步驟和介面講解  19:34
    2. 建立OpenSLES音訊播放測試專案並完成引擎初始化  12:16
    3. 完成OpenSLES混音器CreateOutputMix初始化  6:11
    4. 配置OpenSL的PCM音訊輸入格式  4:39
    5. 讀取pcm音訊檔案並使用OpenSL播放  23:41
  第8章:EGL和OpenGLES Shader顯示YUV視訊
    1. egl和opengl_shader_glsl講解  13:55
    2. testopengles_shader專案配置和建立_完成java部分程式碼  11:48
    3. 使用NDKC++完成EGL、display、surface、contex配置和初始化  20:21
    4. Opengl ES Shader頂點座標和材質座標分析  10:52
    5. 頂點著色器程式碼glsl程式碼編寫  7:01
    6. yuv420p片元著色器glsl編寫  14:22
    7. shader初始化完成並編譯頂點和片元著色器程式碼  11:40
    8. program渲染程式初始化給shader傳遞頂點和材質頂點資料  16:05
    9. opengl的yuv紋理的建立和初始化  18:06
    10. OpenglES紋理資料修改和顯示  9:16
    11. 通過OpenglES紋理修改完成yuv檔案的播放顯示  5:22
  第9章:視訊播放器專案實戰一 需求和設計模式
    1. 視訊播放器專案設計說明和UML類圖知識講解  13:28
    2. 模組分解和用到的7個設計模式講解  13:31
    3. 介面卡、建造者、代理模式講解  14:16
    4. 門面模式&生產者消費者模式  7:12
    5. Observer觀察者模式講解和應用  5:18
    6. 解碼顯示幀資料處理順序圖和開發計劃講解  7:09
  第10章:視訊播放器專案實戰二 音視訊解碼解封裝
    1. 專案建立許可權ABI和CMake相關庫和標頭檔案配置  9:18
    2. 建立安卓流媒體播放器XPlay專案並配置添加了解封裝模組程式碼及其依賴日誌類  14:29
    3. FFDemux的Open實現開啟媒體檔案  16:27
    4. FFdemux的Read讀取幀資料介面編寫  11:21
    5. 完成XThread執行緒類IDemux繼承後線上程中讀取幀資料  13:57
    6. 添加了XSleep完成XThread執行緒函式的停止和超時判斷  9:53
    7. 觀察者Observer模式的程式碼實現並使用IDemux進行測試  14:11
    8. IDecode和FFDecode模組程式碼建立  9:58
    9. FFDecode的Open開啟解碼器介面編寫和Observer基類新增  10:07
    10. 新增IDemux的GetVPara獲取視訊XParamter引數介面用IDecode的Open測試  5:55
    11. 封裝FFDecode解碼的Send和Recv介面  14:02
    12. 讀取媒體幀資料獲取型別資訊(音訊、視訊)存入XData  8:13
    13. 完成音視訊解碼和並重構解碼器加入觀察者模式  12:13
    14. 加入生產者消費者模式控制音視訊緩衝  19:14
  第11章:視訊播放器專案實戰三 音視訊播放
    1. IVideoView顯示模組架構講解和程式碼建立  16:27
    2. IEGL類初始化封裝java部分新增XPlay視窗類  19:29
    3. XShader基於yuv420p的初始化Init程式碼完成並測試  13:46
    4. XTexture初始化並完成GLVideoView的呼叫  14:06
    5. GLVideoView完成使用shader顯示視訊  27:49
    6. 完成音訊重取樣IResample模組初始化程式碼  9:40
    7. 完成音訊重取樣IResample模組的處理功能  22:23
    8. 完成了IAudioPlay和SLAudioPlay的音訊播放環境初始化  32:09
    9. IAudioPlay的Update將音訊壓入緩衝佇列並測試  9:44
    10. SLAudioPlay音訊播放完成並測試對MP4檔案音視訊播放  9:54
    11. 完成硬解碼並完成NV21和NV12格式的shader顯示編寫  35:39
    12. 解決android8.0下opengles不能播放的問題和音訊播放的迴音問題  4:32
  第12章:頻播放器專案實戰四 完成架構解決同步和seek
    1. 完成facade模式的IPlayer並實現Open介面  26:26
    2. 完成Iplayer開始播放和視窗初始化介面  8:30
    3. 完成Builder模式的IPlayerBuilder構建IPlayer物件  26:39
    4. 完成IPlayerProxy代理模式並進行測試架構搭建完成  12:19
    5. 統一換算pts為毫秒使用IPlayer完成音視訊同步播放  25:41
    6. IDemux&FFdemux;執行緒安全和Close清理函式編寫  7:00
    7. FFdecode和FFResample執行緒安全處理和Close清理函式編寫  10:44
    8. SLAudioPlay的執行緒安全處理和Close清理函式編寫  11:25
    9. XEGL的執行緒安全處理和Close清理函式編寫  6:47
    10. XShader執行緒安全處理和Close清理函式編寫  8:01
    11. XTexture和GLVideoView的執行緒安全和清理函式編寫  7:57
    12. IPlayer完成Close清理函式編寫並完成多次開啟視訊檔案的測試  17:03
    13. 新增開啟視訊按鈕和進度滑動條並響應開啟事件  8:32
    14. 新增視訊開啟路徑和香港衛視rtmp開啟路徑的介面  5:30
    15. 完成通過介面多次開啟視訊檔案,修正了多次開啟顯示出現的bug  12:23
    16. 在835cpu的手機中測試並修正了音訊播放Close的bug  9:48
    17. 完成了播放進度的顯示並修正了硬解碼引數傳遞錯誤  16:43
    18. 滑動條拖動Seek視訊開發策略詳細分析  7:09
    19. 完成了IDemux的Seek和介面SeekBar的事件響應  14:32
    20. 添加了視訊播放的暫停和恢復  16:29
    21. 修改了視訊播放到結尾再次開啟會鎖死的bug  8:30
    22. 通過手動解碼幀資料完成了IPlayer控制視訊播放進度的功能  15:32
大家可以點選【 檢視詳情】檢視我的課程