這幾天一個(gè)學(xué)生在調(diào)試視頻捕捉程序的時(shí)候遇到了一個(gè)問題。他使用capGetVideoFormat函數(shù)獲得視頻的格式時(shí),發(fā)現(xiàn)m_bmpinfo.bmiHeader.biBitCount為16,他認(rèn)為這是表示16位的RGB格式。可是不管他是使用RGB565,還是RGB555格式進(jìn)行轉(zhuǎn)換時(shí),發(fā)現(xiàn)轉(zhuǎn)換后的YUV文件都是不對的。在我的Sony筆記本上運(yùn)行他的程序,其中的m_bmpinfo.bmiHeader.biCompression的值為1498831189,這說明筆記本的攝像頭所采集的數(shù)據(jù)的格式并不是普通的16位RGB數(shù)據(jù),而是UYVY格式的。UYVY格式是YUV格式的一個(gè)變種,在網(wǎng)上可以找到詳細(xì)的說明,在此就不贅述了。
要想知道biCompression到底有多少種取值,可以參考一下:http://files.codes-sources.com/fichier.aspx?id=45735&f=src/org/hypik/webcamlib/codecs/Codecs.java。在這里詳細(xì)的列出了各種視頻壓縮的編碼。
怎樣才能知道自己的攝像頭到底支持哪種格式的輸出呢?可以使用capDlgVideoFormat函數(shù):
capDlgVideoFormat(m_wndVideo);
這個(gè)函數(shù)會(huì)激活攝像頭驅(qū)動(dòng)的視頻格式設(shè)置對話框,如下圖所示。
我的這個(gè)攝像頭支持2種輸出格式,一種是UYVY,另一種是YUV2。 如果將m_bmpinfo.bmiHeader.biCompression設(shè)置為這兩種之外的值,再使用capSetVideoFormat改變輸出格式,由于驅(qū)動(dòng)程序不支持而不會(huì)獲得成功。
posted on 2010-11-16 22:30
zealsoft 閱讀(1941)
評論(1) 編輯 收藏 引用 所屬分類:
視頻處理