我想你正在考慮顯示每個幀的時間。
你需要給MediaMuxer,與框架一起,其右側的 「MediaCodec.BufferInfo」, 「presentationTimeUs」 相應設置。
例如,有3個幀,每個幀中示出用於在視頻1秒:
sec 0---------1---------2-----------
frame1 frame2 frame3
int[] timestampSec = {0, 1, 2};
for (int i = 0; i < 3; i++) {
muxer.writeSampleData(trackId,
frame[i],
timeStampSec[i] * 1000000);
}
至於初始化和MediaMuxer的結束:
addTrack:當你index == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED當您撥打MediaCodec.dequeueOutputBuffer()時,將格式發送到MediaMuxer以初始化此格式的新曲目(它是「vidio/avc 「 在這種情況下)。
mediamuxer.start()
開始把幀如上
mediamuxer.stop(),釋放()
你需要移動從MPEG4的元信息文件結尾到開始請參閱http://mithunme.wordpress.com/2009/11/04/streaming-mp4-via-http/ – skyde
MediaMuxer類真的想將.mp4文件寫入磁盤。它不適合流式傳輸。如果您之後正在將編輯後的視頻源從您的應用直播到主機瀏覽器,則需要整理網絡視頻流協議。但我不相信我完全理解你的追求。 – fadden