2010-05-30 94 views
1

我正在寫一個應用程序,它是一種有點視頻流媒體。客戶端正在使用udp套接字接收視頻流。現在正在接收流,我想同時播放它。它不同於播放本地視頻文件位於你的硬盤上,在這種情況下,它可以像使用系統(「vlc文件名」)運行文件一樣簡單。但是在這裏涉及許多問題,例如可能會延遲接收,並且播放器必須等待傳入數據。我已經開始瞭解如何使用vlc來運行視頻流。請您詳細說明使用vlc播放流的步驟。我正在使用C++實現我的應用程序。播放傳入的視頻流

編輯:有人可以給我一些關於VLC API的一些想法,它可以用來將給定的視頻流到特定的目的地,並在另一端接收該流播放它。

與問候, Mawia

回答

2

那麼你可以隨時看看比VideoLan's own homepage 其他,流非常簡單:

  1. 決定,支持流媒體視頻編解碼器。 (很明顯,可能已經完成)
  2. 選擇合適的數據包大小。
  3. 選擇合適的視頻質量。
  4. 在客戶端:預緩衝至少2秒的視頻和音頻。

號碼2和3的聲音很奇怪,但他們是值得我們思考:

如果您有寬帶連接,你能負擔得起到客戶端泵大包。注意:這裏的數據包意味着客戶端需要完全解碼下一位視頻的一致數據單元。如果發送大包,比如說4秒的視頻,那麼由於等待完整數據單元的時間爲4秒,您會有風險滯後,而0.5秒的小包會讓您感到遲緩,但仍然可以識別並且相對流暢的視頻不好連接。

質量同樣如此。像素化和神器纏身的視頻很糟糕,視頻/聲音失調的視頻更糟糕。而是切換到較低的質量/較高的壓縮設置。

如果你的問題純粹是爲了完成它的一部分,那麼點1和4應該爲你做。

你可能會問: 「如果我想做實時的實時視頻?」 以上所有建議仍然適用,但所有這些都必須做得更聰明。首先要做的是:你不能通過不好的連接來實時進行。這是一個現實的事情。如果你的連接足夠胖,你幾乎可以達到實時,只需將每個圖像和一個小的聲音樣本抽出,而不需要太多的處理或任何緩衝。從中可以獲得良好的客戶體驗,但這種聯繫極不可能。這裏的訣竅通常是傳輸視頻質量稍低於理論上允許的連接,並仍然在其中緩存緩存和數據包重新排序......玩得開心。很難。

+0

非常感謝您的答覆。 是不是有任何VLC API可以從應用程序調用它們並使用這個流式接口? – mawia 2010-05-30 21:53:36

0

不幸的是,唯一的API vlc是命令行或命令行的等效命令(您可以啓動播放器實例,基本上將它們傳遞給命令行)。你可以使用libvlc,如果你需要多個實例或回調,但它仍然是非常不透明的...