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