왜 이것이 작동하지 않습니까?
cat /dev/video1 | mplayer -
작동하게 할 수 있다면 "tee"를 사용하여 동시에 비디오를 재생하고 녹화하여 mplayer와 mencoder에 데이터를 제공할 수 있습니다.
라이브 비디오(/dev/video1:input=1:norm=NTSC)를 재생하고 지연 없이 동시에 녹화하고 싶습니다.
mplayer는 비디오를 잘 재생합니다(눈에 띄는 지연 없음).
mencoder는 잘 문서화되어 있습니다.
하지만 /dev/video의 출력을 "티"하여 둘 다에 공급할 수 있는 방법을 모르겠습니다. (인코딩한 다음 인코딩된 비디오를 즉시 재생하는 방법을 알고 있지만 이로 인해 대기 시간이 너무 길어집니다.)
mplayer와 mencoder가 stdin에서 읽을 수 있다면 "tee"를 사용하여 이 문제를 해결할 수 있습니다.
어떻게 해야 합니까?
[그런데 저는 대기 시간을 추가하지 않는 한 동시에 재생하고 녹음하는 솔루션에 만족합니다. 저는 mplayer의 팬이 아닙니다. 하지만 먼저 인코딩한 다음 재생하면 대기 시간이 늘어납니다. ]
답변1
표준 입력에서 재생할 때 약간의 캐싱을 제공해야 합니다.
cat /dev/video1 | mplayer -cache 1024 -
해당 캐시 옵션이 없으면 "조회 실패 선형 스트림에서 뒤로 볼 수 없습니다."라는 오류가 발생합니다.
답변2
mplayer 매뉴얼 페이지에 따르면 mplayer -
표준 입력에서 읽어야 하지만 -noconsolecontrols
mplayer가 표준 입력에서 키보드 제어 이벤트를 읽지 못하도록 이를 지정해야 합니다.
답변3
나는 단일 mplayer를 사용하여 원하는 것을 달성하는 것이 불가능하다고 생각합니다. 나는 이 질문이 다음과 같이 묻는 것을 발견했고 분명히 다음과 같이 대답했습니다.
발췌:[MPlayer-사용자] 카메라 IP 스트림을 동시에 표시하고 기록합니까?
이것은 작동하지만 동일한 mplayer 프로세스에서 수행하고 싶습니다. 슬레이브 모드에서 파일에 스트림을 쓰는 방법을 아시나요? 문서에서 올바른 명령을 찾지 못했습니다.
나는 이것이 불가능하다고 생각한다. MPlayer는 재생할 수 있습니다또는둘 다 대신 하나의 스트림을 덤프하십시오.
그러나 한 작업을 사용하여 스트림을 덤프한 다음 다른 작업을 사용하여 녹음된 스트림을 재생할 수 있습니다. 최소한 네트워크 트래픽은 3배로 늘어나지는 않습니다.
이것원래 질문대답은 다음과 같습니다.
동시에 스트림을 표시하고 이를 파일에 쓸 수 있는 가능성(따라서 로깅)을 표시해야 합니다. 내 요점은 내가 하고 싶은 것도 같은 과정이라는 것이다.
실제로 슬레이브 모드의 mplayer 프로세스가 있습니다.
$ mplayer -slave -wid id_window camera_address/
로그인해야 할 때마다 새 프로세스를 시작합니다. 이번에는 슬레이브 프로세스가 아닙니다.
$ mplayer -dumpvideo camera_address -dumpfile stream.mp4/
이것은 작동하지만 동일한 mplayer 프로세스에서 수행하고 싶습니다. 슬레이브 모드에서 파일에 스트림을 쓰는 방법을 아시나요? 문서에서 올바른 명령을 찾지 못했습니다.
ffmpeg를 사용하시나요?
단지 아이디어이지만 ffmpeg 웹 사이트에서 다음 내용을 논의하는 위키 게시물을 찾았습니다.여러 출력 생성. 아마도 /dev/video1
mplayer에서 중복 스트림을 분할하여 사용할 수 있을까요 ?
답변4
8년 이상이 지난 후에는 제가 찾은 솔루션을 게시해야 합니다.
파이썬을 사용하세요. AFAICT, 이는 표준 Linux 도구만으로는 불가능합니다.
이 글을 읽고 있다면 벽에 머리를 부딪히는 것을 멈추는 것이 좋습니다.
매우 대략적으로 - pygame(pygame 가져오기)을 사용하여 카메라를 읽고 비디오를 표시하고 OpenCV(cv2 가져오기)를 사용하여 비디오를 저장합니다. 이것은 작동합니다.