Android 流媒體技術見解
阿新 • • 發佈:2018-11-11
一、技術關鍵點
1. 音訊採集:設定合理的取樣引數,包括取樣率、通道數、取樣深度。
2. 視訊採集:手機攝像頭採集輸出的格式(NV12/NV21/YV12),要注意相互間的轉換,以及採集出來影象的方向應該根據那種策略進行旋轉,尤其在android裝置需要做更多的相容性測試。
3. 編碼和解碼:熟悉的使用ffmpeg可以方便我們快速完成視訊編解碼的功能,但是這種方式會過多的消耗CPU而使得效能大大降低,因此採用硬編碼通過GPU加速可以提升一個檔次;需要注意的是IOS的硬編碼相容性會遠大於Android的硬編碼,所以在Android裝置上做硬編碼同樣要採用一個有效的策略,提高其相容性;硬解碼整體的相容性問題會少很多;
4. 協議以及網路傳輸:對於標準協議,用的相對較多的是RTSP/RTMP/SIP,這三種屬於應用互動層的協議;在完成互動協議之後,才會使用到傳輸協議(TCP/UDP/RTP)
5. 技術延伸:包括點對點傳輸、後期視訊特效處理、影象識別;
二、相關開源專案
https://github.com/FFmpeg/FFmpeg
https://github.com/BelledonneCommunications/linphone
https://github.com/asterisk/pjproject
https://github.com/appunite/AndroidFFmpeg
https://github.com/Bilibili/ijkplayer
https://github.com/cisco/openh264