Android音視訊開發學習路線+專案實戰+原始碼解析(WebRTC Native 原始碼、X264原始碼、FFmpeg、Opus原始碼.....)
前言
話不多說先看圖
音視訊從業者基本上有兩個層面:一個層面是搞音視訊演算法,這類人非常少,需要有深的數學能力和演算法背景,這類人一般都會選擇去大公司,薪水百萬是最low 的。
另一個層面是搞工程,這類人相對較多,他們有紮實的理論基礎,很強的技術功底,對音訊、視訊都非常熟悉。這些人工資要比一般開發者高20%左右;隨著5G時代的到來,音視訊慢慢變成人們日常生活中的必須品。
可在目前的確沒有比較系統的教程或者書籍,網上的部落格文章也都是比較零散的,在此小編花費大量時間收集和整理,終於將音視訊方面的知識點整理成了一個專題,今天藉此文章分享給對音視訊感興趣的小夥伴。
學習方向
我們先來看看一個方向性的學習指南:
- 在 Android 平臺繪製一張圖片,使用至少 3 種不同的 API,ImageView,SurfaceView,自定義 View
- 在 Android 平臺使用 AudioRecord 和 AudioTrack API 完成音訊 PCM 資料的採集和播放,並實現讀寫音訊 wav 檔案
- 在 Android 平臺使用 Camera API 進行視訊的採集,分別使用 SurfaceView、TextureView 來預覽 Camera 資料,取到 NV21 的資料回撥
- 學習 Android 平臺的 MediaExtractor 和 MediaMuxer API,知道如何解析和封裝 mp4 檔案
- 學習 Android 平臺 OpenGL ES API,瞭解 OpenGL 開發的基本流程,使用 OpenGL 繪製一個三角形
- 學習 Android 平臺 OpenGL ES API,學習紋理繪製,能夠使用 OpenGL 顯示一張圖片
- 學習 MediaCodec API,完成音訊 AAC 硬編、硬解
- 學習 MediaCodec API,完成視訊 H.264 的硬編、硬解
- 串聯整個音視訊錄製流程,完成音視訊的採集、編碼、封包成 mp4 輸出
- 串聯整個音視訊播放流程,完成 mp4 的解析、音視訊的解碼、播放和渲染
- 進一步學習 OpenGL,瞭解如何實現視訊的剪裁、旋轉、水印、濾鏡,並學習 OpenGL 高階特性,如:VBO,VAO,FBO 等等
- 學習 Android 圖形影象架構,能夠使用 GLSurfaceviw 繪製 Camera 預覽畫面
- 深入研究音視訊相關的網路協議,如 rtmp,hls,以及封包格式,如:flv,mp4
- 深入學習一些音視訊領域的開源專案,如 webrtc,ffmpeg,ijkplayer,librtmp 等等
- 將 ffmpeg 庫移植到 Android 平臺,結合上面積累的經驗,編寫一款簡易的音視訊播放器
- 將 x264 庫移植到 Android 平臺,結合上面積累的經驗,完成視訊資料 H264 軟編功能
- 將 librtmp 庫移植到 Android 平臺,結合上面積累的經驗,完成 Android RTMP 推流功能
- 上面積累的經驗,做一款短視訊 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開發工作中沒有一門吃香獨特的技術,想拿高薪也只能是望塵莫及的。做個勤奮向上的人,加緊學習,抓住中心,寧精勿雜,寧專勿多。