場景介紹:
設備端通過服務器傳向客戶端(Android手機)實時發送視頻數據(H.264)和音頻數據(g711a或g711u), 需要在客戶端將音視頻數據保存為MP4文件存放在本地,用戶可以通過APP或者直接在手機上觀看MP4文件.
解決方案:
通過Android MultiMedia Framework提供的MediaMuxer類對音視頻數據進行同步合成.
流程圖:
流程分析:
1.整體來看, 合成的MP4文件, 視頻部分為H.264編碼格式的數據, 音頻部分為AAC編碼格式的數據, 因此, 視頻數據可以不做任何處理, 直接封裝到MP4文件中, 而音頻數據需要先將g711格式的數據轉為AAC格式的數據, 再封裝到MP4文件中.
2.對於音頻部分, 需要先解碼為PCM原始音頻數據(有很多第三方的解碼庫可以用), 再將解碼后的PCM數據編碼為AAC格式的數據.
3.通過MediaMuxer提供的接口-writeSampleData(), 將H.264和AAC數據分別同時寫入到MP4文件.