1. 程式人生 > >MJPEG+PCM合成AVI視訊格式檔案

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視訊原始碼,有需要可以聯絡我!