一、技術關鍵點
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