2016-06-09 4 views
1

/dev/video0을 out.raw로 파이프 처리하려고 시도한 후 즉시 omxplayer에서 읽으려고합니다. 하지만 omxplayer에는 사진을 점점하지 오전 (내가와 같은 시도 MPlayer는 out.raw -> out.raw 재생되지만 사진이 표시되지 않습니다)/dev/video0에서 fifo 파일로 덤프 출력

내 명령 :

mkfifo out.raw 
mplayer tv:///dev/video0 -dumpstream -dumpfile out.raw & 
omxplayer out.raw 

내가 아니라고 왜 어떤 생각을 사진 찍는거야?

답변

3

video0 장치가이 경우 무엇인지 명확하지 않지만 mplayer가이를 다르게 초기화하므로 차이가 있습니다.

둘째, 대부분의 경우 out.raw을 일반 파일로 변경하더라도 mplayer는 아무 것도 쓰지 않습니다. mencoder tv:// -tv driver=v4l2:width=960:height=720:fps=15:outfmt=mjpeg -nosound -ovc copy -o out.fifo

그러나,이 MEncoder는 MJPEG의 형식으로 입력 장치에서 읽고, 단순히 프레임을 복사하도록 지정 : 올바르게 FIFO에 데이터를 전송합니다 다음을 사용하여 내 노트북 ​​웹캠에 대한

, fifo.

FIFO를 읽는 플레이어는 잘린 MJPEG을 준비하지 않으므로 대신 코드 변환을 시도해야합니다 (-ovc x264 -of avi).

플레이어가 잘린 프레임을 처리하는 방법에 매우주의하지 않는 한 FIFO를 여러 번 재생할 때 문제가 발생할 것입니다. 출력물에 키 프레임이 많이 포함되어 있습니다.

FIFO에서 읽기가 없으면 결국 쓰기가 차단됩니다.

아마도 FIFO를 사용하려는 이유를 명확히한다면 더 나은 해결책이 될 수도 있습니다.

1

가능한 경우 VLC를 대신 사용합니다.

cvlc v4l2:///dev/video0 --sout=file/ps:go.mpg 
  • VLC도 (뿐만 아니라 GUI)를 CLI에서 작동 그리고 지금 당신이 원하는 경우도 코드 변환 및 스트림 HTTP를 통해 또는 멀티 캐스트 할 수 cvlc (TIL :
  • 을 불리는 것 같다.

참조 : https://wiki.videolan.org/Documentation:Streaming_HowTo/Receive_and_Save_a_Stream/

편집 좋아, 내 고대 리눅스 민트 (VLC 2.0.6 대신 omxplayer의 MPlayer는)에 노력했다. 먹스는 = XXX는 VLC Muxers

mkfifo /tmp/out.raw 
cvlc <video_input> --sout="#duplicate{dst=std{access=file,dst='/tmp/out.raw',mux=avi},dst=nodisplay}" 
mplayer /tmp/out.raw 

PS를 참조, 당신의 선택의 또 다른 하나가 될 수 있습니다 나는 위 년간 VLC를 사용하지 않은 안된이다. 나는 방금 죽이는 5 분을 가지고 있었다. 그리고 당신의 질문에 내가 대답하기로 결정했던 운에 의해 발견했다.

+1

VLC는 FIFO를 통해 올바르게 상호 작용하지 않습니다 :'코어 입력 오류 : 스트림 출력 인스턴스를 시작할 수 없습니다. 중단합니다' – robbat2