2014-01-10 49 views
0

我目前正在開展的項目需要增加已有的VoIP功能。語音處理的核心是C語言,其餘部分是使用Qt的C++語言 - 音頻是通過portaudio處理的。用戶之間的連接目前通過UDP建立,我認爲必須改變計劃的視頻連接。開發平臺是VS2012上的Windows - 但是,該系統是跨平臺的。現有VoIP系統的視頻流 - 應該使用哪些庫?

簡而言之,我想要做的是:從網絡攝像頭獲取視頻信號,同步來自C核心的音頻和來自網絡攝像頭的視頻,並使用庫和編解碼器(信號編碼/混合)各方並通過RTP發送。系統應該能夠組播傳輸。

我做了一些關於可能的庫的研究,並且偶然發現了ffmpeg和libVLC。對於我想使用x264的編解碼器。如果我是正確的,ffmpeg和libVLC應該能夠滿足我的要求?

但是我不確定選哪一個,從他們的文檔中我真的無法提取,哪個庫更適合。有沒有人有類似的問題,可以幫助我 - 當談到視頻處理和編碼時,我是一個新手。

額外的問題:你有任何提示或方法同步視頻和音頻信號?

+1

您可以編寫一個抽象層,讓您輕鬆切換後端或比較其性能/適用性。我預計任何一個圖書館都可以接受。如果使用x264進行編碼,您將面臨的主要問題是許可證,因爲它在GPL下,這意味着您的整個應用程序需要獲得GPL許可。 – Pete

+0

抽象層似乎是個好主意。我認爲這個許可在x264上會有問題。因此,WebM/VP8作爲編解碼器將是一個解決方案,我猜?那麼FFmpeg可以在LGPL下使用libvpx? – lmNt

+1

是的,你可以使用VP8(或VP9),我認爲你仍然可以用ffmpeg的lgpl變體來解碼h.264,但不能編碼它,因爲這需要x264。除非你準備好GPL你的應用程序。 – Pete

回答

0

如果有人有興趣,這是我落得這樣做:

我使用的WebM容器格式,VP8與Vorbis格式目前(但將很快改變,以VP9與作品如果完成測試),處理通過用於編碼/解碼/複用等的ffmpeg/libav庫和用於顯示和線程化的SDL。在Unix上使用LGPL支持ffmpeg/libav進行交叉編譯,以保持我們的項目閉源。

相關問題