2011-03-11 90 views
0

我有一個應用程序(qt C++)從USB設備讀取數據,將該數據解碼爲存儲在uchar陣列中的24位RGB像素。如何將像素從緩衝區編碼爲h.264或VP8

Framerate是〜10 FPS。幀大小是128x4096。

問題是:如何將這些幀實時編碼爲VP8或h.264視頻?

不允許外部進程,所有內容都需要在我的應用程序中運行。

ffmpeg是一個選項,但如何將它包括到我的項目中並使用它?文件至少可以說是相當糟糕的。另外x264可能是一個選項,但與ffmpeg相同。這也是相當昂貴的,1美元的單位和最低10000.

簡單的指導將是有益的,但我懷疑是否存在一個。

應用程序應該在Windows和Linux上運行。

回答

0

VP8 SDK有文檔,甚至some sample code

+0

該文檔相當簡單。示例簡單編碼器將文件用於輸入和輸出文件。我試圖將輸入文件更改爲內部緩衝區,但它相當複雜,因爲我對C的瞭解相當差。 – 2011-03-11 12:32:50

0

問題與VP8 SDK是該實例僅編碼爲IVF。由於安全漏洞(緩衝區溢出),該編解碼器似乎已被Microsoft關閉。甚至無法檢查結果時,甚至無法獲得VP8項目設置。它至少使用了BSD許可證方案,並且據稱其未涉及專利。 VP8 SDK有一些轉換格式的例程,但它們被埋在了源代碼樹中。

未提及的一個選項是Intel Media SDK,但將您鎖定到窗口。

還有Theora和Dirac。

X264有一個編碼器,但獲得商業許可證會很昂貴。 GPLv2源代碼不是「免費」的。我不在乎他們試圖讓你相信什麼。 還有一個名爲「Revel - 真正簡單的視頻編碼庫」的項目。這是獲取MPEG-4第2部分文件編碼的途徑。 H264是MPEG-4的第10部分.H264也被稱爲AVC。 Revel也是GPL的。

Ffmpeg是一個捕獲所有實用程序,試圖圍繞各種編碼器/解碼器創建一個包裝。如果您使用x264編碼器,它將變成GPLv2。