2011-11-09 56 views
1

我正在處理兩個應用程序:一個在Windows下運行,實時處理專有視頻並通過TCPIP發送;另一個應用程序在Linux中接收並播放。現在它可以處理需要千兆網絡的未壓縮視頻幀。我想壓縮視頻。你可以推薦一種編解碼器,它可以在Windows和Linux上使用,(b)可以作爲API使用 - CompressFrame(),UncompressFrame()可以直接使用。如何添加編解碼器

+1

逐幀?什麼關於JPG? – yms

+0

用gzip怎麼樣? – 2011-11-09 21:47:18

+0

我希望有人會指點我使用不帶有特定於操作系統的框架(如DirectShow)的編解碼器。 –

回答

2

Intel Integrated Performance Primitives讓您在Windows和Linux中選擇編碼器和解碼器。另一種選擇是ffmpeg/libvacodec

爲了更加開放的互操作性,您可能更願意爲網絡上的數據流傳輸實現一些衆所周知的協議,例如RTSP/RTP

+0

我已經下載了ffmpeg,但無法弄清楚如何在Windows下編譯它。它不包括Visual Studio項目。我應該自己創建它嗎?關於如何使用編解碼器的描述在哪裏? –

+1

你不能使用Visual Studio編譯ffmpeg http://stackoverflow.com/questions/4258883/is-it-possible-to-compile-ffmpeg-in-visual-studio-2010但是,一旦你編譯它與另一個編譯器,你可以使用它(來自Visual Studio項目的DLL)。 –

+0

謝謝。你給的鏈接看起來就是我正在尋找的。 –

1

libavcodec,libavformat和其他ffmpeg項目 - 使用的各種編解碼器。

Windows Media Format SDK - 可以將視頻編碼爲WMV流。相關Windows技術包括DirectShow和Media Foundation。

Ogg Theora - 不是最優質的編解碼器比較,但免費且易於使用。需要將RGB轉換爲YUV。我有這樣的示例代碼,我可以爲你挖掘如何做到這一點。

VP8和來自Google的WebM。

MJPG - 這只不過是將每個幀編碼爲JPG。高CPU和高比特率,但最簡單的實現。任何JPG編碼器都可以找到。

關於編解碼器API的一個注意事項。直觀地說,你只需要有「壓縮」和「解壓縮」的功能。 (MJPG滿足這個要求)但是視頻比單獨壓縮單幀更復雜。大多數壓縮幀緩衝器基於前一幀的差異,而不再對整個圖像進行編碼。它們針對不同的目標比特率,有損(UDP)與無損(TCP)網絡,幀速率,I幀接口等進行調諧......一些高級編解碼器甚至希望從接收器獲得QOS信息,使得它們可以自我調整其輸出以匹配網絡條件。

+0

libavcodec - 無法弄清楚如何在VS2008中編譯它(沒有項目)以及如何將它添加到我的項目中。你能指點我嗎? –

+1

http://ffmpeg.zeranoe.com/builds/ – selbie

+0

謝謝。下載的開發者共享,學習文檔。看起來正是我所缺少的。 –

相關問題