MJPEG+PCM合成AVI視訊格式檔案
前段時間將Webcam的MJPEG獲得了,也將MJPEG通過硬體解碼顯示出來了,現在要做的是將MJPEG資料合成視訊檔案。想到最簡單的視訊格式就是微軟的AVI了,首先我們要對AVI的結構有些認識,下面我們通過結構分析軟體,看看簡單的AVI結構(AtomicBrowser很不錯的分析軟體),下面是我合成MJPEG 1280*720 25fps, 150張MJPEG圖片,PCM雙通道,22050Hz, 16bit位寬,的結構。
'AVI' 包涵整個視訊檔案;
‘hdrl’ 記錄avi的全域性資訊;
‘avih’ 記錄了視訊格式資料;
‘strl’ 是視訊的資料流資訊,視訊有多少流就有多少‘strl’
‘movi’是存放流資訊的,其中視訊流的標記是‘00dc’, 音訊流是‘01wb’,其中00,01是代表流的編號。
只需要這些資訊合成視訊就能播放了,我們就沒有必要,找麻煩寫一些欄位,如:‘JUNK’, ‘INFO’, ‘idx1’
下面我們一步一步的合成AVI,首先寫頭資訊:
‘avih’
microsec/frame每個畫面幀的間隔時間,納秒為單位
max bytes/sec每秒資料流的byte數
frame指示該視訊有多少視訊幀
sug. bufsize建議解碼的快取
# stream視訊流的數目,只有視訊流和音訊流,所以是2
width,height視訊的寬高
視訊流‘strh’和‘strf’
這些資料就不用解釋了,看英文加數字,再對照我合成AVI的引數就清楚了
音訊流‘strh’和‘strf’
同上這些資料就不用解釋了。
真實資料存放在‘movi’裡面
上面有對應的標記和size,很清晰吧。
有了上面清晰的資料結構,再對應一個一個欄位寫資料就可以合成AVI檔案了,是不是很簡單,我這裡有用C語言寫的,生成AVI視訊原始碼,有需要可以聯絡我!