1. 程式人生 > 其它 >Android音視訊開發學習路線+專案實戰+原始碼解析(WebRTC Native 原始碼、X264原始碼、FFmpeg、Opus原始碼.....)

Android音視訊開發學習路線+專案實戰+原始碼解析(WebRTC Native 原始碼、X264原始碼、FFmpeg、Opus原始碼.....)

前言

話不多說先看圖

音視訊從業者基本上有兩個層面:一個層面是搞音視訊演算法,這類人非常少,需要有深的數學能力和演算法背景,這類人一般都會選擇去大公司,薪水百萬是最low 的。

另一個層面是搞工程,這類人相對較多,他們有紮實的理論基礎,很強的技術功底,對音訊、視訊都非常熟悉。這些人工資要比一般開發者高20%左右;隨著5G時代的到來,音視訊慢慢變成人們日常生活中的必須品。

可在目前的確沒有比較系統的教程或者書籍,網上的部落格文章也都是比較零散的,在此小編花費大量時間收集和整理,終於將音視訊方面的知識點整理成了一個專題,今天藉此文章分享給對音視訊感興趣的小夥伴。

學習方向

我們先來看看一個方向性的學習指南:

  1. 在 Android 平臺繪製一張圖片,使用至少 3 種不同的 API,ImageView,SurfaceView,自定義 View
  2. 在 Android 平臺使用 AudioRecord 和 AudioTrack API 完成音訊 PCM 資料的採集和播放,並實現讀寫音訊 wav 檔案
  3. 在 Android 平臺使用 Camera API 進行視訊的採集,分別使用 SurfaceView、TextureView 來預覽 Camera 資料,取到 NV21 的資料回撥
  4. 學習 Android 平臺的 MediaExtractor 和 MediaMuxer API,知道如何解析和封裝 mp4 檔案
  5. 學習 Android 平臺 OpenGL ES API,瞭解 OpenGL 開發的基本流程,使用 OpenGL 繪製一個三角形
  6. 學習 Android 平臺 OpenGL ES API,學習紋理繪製,能夠使用 OpenGL 顯示一張圖片
  7. 學習 MediaCodec API,完成音訊 AAC 硬編、硬解
  8. 學習 MediaCodec API,完成視訊 H.264 的硬編、硬解
  9. 串聯整個音視訊錄製流程,完成音視訊的採集、編碼、封包成 mp4 輸出
  10. 串聯整個音視訊播放流程,完成 mp4 的解析、音視訊的解碼、播放和渲染
  11. 進一步學習 OpenGL,瞭解如何實現視訊的剪裁、旋轉、水印、濾鏡,並學習 OpenGL 高階特性,如:VBO,VAO,FBO 等等
  12. 學習 Android 圖形影象架構,能夠使用 GLSurfaceviw 繪製 Camera 預覽畫面
  13. 深入研究音視訊相關的網路協議,如 rtmp,hls,以及封包格式,如:flv,mp4
  14. 深入學習一些音視訊領域的開源專案,如 webrtc,ffmpeg,ijkplayer,librtmp 等等
  15. 將 ffmpeg 庫移植到 Android 平臺,結合上面積累的經驗,編寫一款簡易的音視訊播放器
  16. 將 x264 庫移植到 Android 平臺,結合上面積累的經驗,完成視訊資料 H264 軟編功能
  17. 將 librtmp 庫移植到 Android 平臺,結合上面積累的經驗,完成 Android RTMP 推流功能
  18. 上面積累的經驗,做一款短視訊 APP,完成如:斷點拍攝、新增水印、本地轉碼、視訊剪輯、視訊拼接、MV 特效等功能

相信我,如果你認真把所有任務都完成了,你一定會成為音視訊人才招聘市場的香餑餑~~如何才能更好地學好以上知識呢?下面正是要給大家分享小編花費86天整理的關於音視訊開發入門到進階,已整理成PDF文件:點選這裡免費獲取

一、Android音視訊硬解碼篇

  • 音視訊基礎知識
  • 音視訊硬解碼流程:封裝基礎解碼框架
  • 音視訊播放:音視訊同步
  • 音視訊解封和封裝:生成一個MP4

二、使用OpenGL渲染視訊畫面篇

  • 初步瞭解OpenGL ES
  • 使用OpenGL渲染視訊畫面
  • OpenGL渲染多視訊,實現畫中畫
  • 深入瞭解OpenGL之EGL
  • OpenGL FBO資料緩衝區
  • Android音視訊硬編碼:生成一個MP4

三、Android FFmpeg音視訊解碼篇

  • FFmpeg so庫編譯
  • Android 引入FFmpeg
  • Android FFmpeg視訊解碼播放
  • Android FFmpeg+OpenSL ES音訊解碼播放
  • Android FFmpeg+OpenGL ES播放視訊
  • FFmpeg簡單合成MP4:視屏解封與重新封裝
  • Android FFmpeg 視訊編碼

四、直播系統聊天技術

  • 百萬線上的美拍直播彈幕系統的實時推送技術實踐之路
  • 阿里電商IM訊息平臺,在群聊、直播場景下的技術實踐
  • 微信直播聊天室單房間1500萬線上的訊息架構演進之路
  • 百度直播的海量使用者實時訊息系統架構演進實踐
  • 微信小遊戲直播在Android端的跨程序渲染推流實踐

五、阿里IM技術分享

  • 企業級IM王者——釘釘在後端架構上的過人之處
  • 閒魚IM基於Flutter的移動端跨端改造實踐
  • 閒魚億級IM訊息系統的架構演進之路
  • 閒魚億級IM訊息系統的可靠投遞優化實踐

文中所有資料都是免費分享給大家的,需要的牛友們可以【點選這裡免費獲取

深入原始碼

《音視訊精編原始碼解析》

第一章、WebRTC Native 原始碼導讀

  • 第一節-安卓相機採集實現分析中
  • 第二節-安卓預覽實現分析
  • 第三節-安卓視訊硬編碼實現分析
  • 第四節-VideoCRE與記憶體抖動優化
  • 第五節-安卓P2P連線過程和 DataChannel 使用
  • 第六節-視訊資料native層之旅
  • 第七節-混音
  • 第八節-P2P連線過程完全解析
  • 第九節-API概覽
  • 第十節-RTP H.264封包與解包

第二章、X264原始碼解讀

  • 第一節-概述
  • 第二節-x264命令列工具中
  • 第三節-編碼器主幹部分-2
  • 第四節-x264_slice_write()
  • 第五節-濾波(Filter)部分
  • 第六節-巨集塊分析(Analysis)部分-幀內巨集塊(Intra)

第三章、FFmpeg

  • 第—節-FFmpeg編譯和整合
  • 第二節-FFmpeg +ANativeWindow 實現視訊解碼播放
  • 第三節-FFmpeg + OpenSLES 實現音訊解碼播放
  • 第四節-FFmpeg + OpenGLES實現音訊視覺化播放
  • 第五節-FFmpeg + OpenGLES 實現視訊解碼播放和視訊濾鏡
  • 第六節-FFmpeg播放器實現音視訊同步的三種方式
  • 第七節-FFmpeg + OpenGLES 實現3D全景播放器
  • 第八節-FFmpeg 播放器視訊渲染優化
  • 第九節-FFmpeg.x264以及fdk-aac 編譯整合
  • 第十節-FFmpeg視訊錄製–視訊新增濾鏡和編碼
  • 第十一節-FFmpeg + Android AudioRecorder音訊錄製編碼由
  • 第十二節-Android FFmpeg 實現帶濾鏡的微信小視訊錄製功能

第四章、ijkplayer原始碼分析系列

  • 第一節-整體結構總結
  • 第二節-read_thread流程
  • 第三節-解碼流程
  • 第四節-渲染流程

第五章jsmpeg原始碼解析

  • 第一節-基礎知識字元處理ArrayBuffer TypedArray
  • 第二節-TS碼流PAT PMT
  • 第三節-原始碼buffer.js對Uint8Array的封裝
  • 第四節-原始碼ts.js TS格式解析流程
  • 第五節-原始碼mpeg1.js MPEG1碼流結構
  • 第六節-概要總結

第六章、Live555原始碼解析

  • 第一節-GROUPSOCK
  • 第二節-MEDIUM媒體基礎類
  • 第三節-MEDIASOURCE、MEDIASINK、MEDIASESSION、MEDIASUBSESSION
  • 第四節-FRAMEDSOURCE、RTPSOURCE、RTPSINK
  • 第五節-GENERICMEDIASERVER、RTSPSERVER、RTSPCLIENT
  • 第六節-testRTSPClient
  • 第七節-ServerMediaSession.ServerMediaSubsession、live555MediaServer

第七章、Opus原始碼解析

  • 第一節-簡介
  • 第二節-編解碼器使用
  • 第三節-手換一個Opus編碼程式
  • 第四節-Opus解碼程式實現
  • 第五節-OggOpus封裝器全解析
  • 第六節-Opus編碼基礎之認識聲音
  • 第七節-Opus編碼基礎之壓縮編碼

總結

以上就是關於音視訊的資料最強整理和概括了(還有部分內容沒有截圖出來),相信應該是全網最全了,所有資料都是免費分享給大家的,也省去了對音視訊感興趣的小夥伴們四處找資料的時間,如果你正好需要可以點下方卡片免費獲取:

音視訊開發的前景,相信大家從相關的招聘網站上就可以看到,不管是流媒體開發還是音視訊處理開發,都是大量招人的,並且由於入門門檻相對較高,學習週期長,薪資也是居高不下。

另外:小編還收集整理一些音視訊相關配套視訊,相信能使大家學習起來更加快速

文中所有資料都是免費分享給大家的,需要的牛友們可以【點選這裡免費獲取

Android架構師之路很漫長, 一起共勉吧!

學習之路猶如逆水行舟,不進則退,如果你鬆懈了, 那麼你就退步了,而在Android開發工作中沒有一門吃香獨特的技術,想拿高薪也只能是望塵莫及的。做個勤奮向上的人,加緊學習,抓住中心,寧精勿雜,寧專勿多。