2013-10-20 10 views
2

/dev/videox 장치의 출력을 "tee"하면 어떻게하면 동시에 두 프로그램에서 라이브 비디오 스트림을 사용할 수 있습니까?Linux에서/dev/video를 "tee"하는 방법은 무엇입니까?

/dev/video1 : input = 1 : norm = NTSC에서 라이브 비디오를 한 번에 두 개의 프로그램 (mplayer 및 mencoder)으로 보내려는 동시에 mencoder가 동시에 느려지지 않는 라이브 뷰를 얻고 싶습니다. 녹음.

나는 그냥 인코딩 된 출력을 mencoder에서 가져 와서 재생하는 방법을 알고 있지만 여러 프레임 지연이 너무 많이 발생합니다. 나는 VLC가 이것을 할 수 있다고 말했지만, 중요한 지체없이 말하지 않았다.

지금 내가 할 수있는 최선의 방법은 mplayer에서 화면을 재생하는 것입니다. 동시에 'avconv -f x11grab'을 사용하여 디스플레이에서 비디오를 가져 와서 인코딩하십시오. 30 초가 아닌 10fps로 끝납니다.

/dev/video1을 2 개로 "tee"해야하는 직접적인 방법이 있어야합니다 (대기 시간이 추가되지 않음). 가상 장치이므로 mplayer와 mencoder는 동시에 장치를 읽을 수 있습니다 (장치가 "사용 중"이라고 불평하지 않고).

그 방법은 무엇입니까?

+0

FWIW, 나는 이것을 포기했습니다 - 아무도 어떻게 알 것 같습니다. 파이썬에서 쉽게 할 수 있습니다. 그래서 그렇게했습니다. –

답변

0

당신이 요구하는 것은 아니지만 단일 프로그램에서 수행하십시오 : GStreamer (try gst-launch). 그것은 입력/출력 파이프에 대해 bash이하는 비디오 스트림을위한 것입니다.

플러그인 GStreamer의 camerabin2 플러그인은 지연없이 필요한 것을 할 수 있습니다. 둘 다 스트림을 재생하고 녹음합니다. 현재는 클라이언트 코드에서만 사용할 수 있지만 gst-launch에서는 사용할 수 없습니다.

RTP 네트워크 프로토콜과 같이 비디오 스트림을 인코딩하고 보내는 것과 같이 좀 더 복잡한 작업이 필요한 경우 GStreamer는 tee filter을 사용합니다.