2013-10-20 26 views
2

如何「開球」/ dev/videox設備的輸出,以便實時視頻流可以被兩個程序同時使用?如何在Linux中「開球」/ dev/video?

我想要將實時視頻從/ dev/video1:input = 1:norm = NTSC一次發送到兩個程序(mplayer和mencoder),以便同時獲得非滯後的實時視圖mencoder是記錄。

我知道如何從mencoder獲取剛剛編碼的輸出並播放它,但會引入多幀(太多)的延遲。我被告知VLC可以做到這一點,但也不是沒有明顯的滯後。

我現在可以做的最好的事情是讓mplayer將它播放到屏幕上,並在同一時間使用「avconv -f x11grab」從視頻中截取並對其進行編碼。這是有效的(它不會增加延遲),但從顯示屏抓取視頻很慢 - 我最終的速度大概是10 fps,而不是30個。

必須有一些簡單的方法可以將/ dev/video1「虛擬設備,所以mplayer和mencoder可以同時讀取它們(沒有人抱怨設備「忙」)。

那是什麼?

+0

FWIW,我放棄了這一點 - 沒有人似乎知道如何。 在Python中很容易做 - 所以我這樣做。 –

回答

0

不完全是你要求的,但在一個程序中:GStreamertry gst-launch)。它適用於視頻流什麼bash爲輸入/輸出管道。

GStreamer的camerabin2插件可以做你沒有滯後的需求:播放流並記錄它。雖然目前它只能用於客戶端代碼,而不能用於gst-launch

如果您需要做更復雜的事情,比如編碼和通過RTP網絡協議發送視頻流,GStreamer的確有一個tee filter