ssh를 통해 / dev / video를 파이프 할 수 있습니까


26

나는 두 컴퓨터하는이 바탕 화면 의 (a 내 사무실에서 웹캠 장착)와 노트북 다른 곳에서 네트워크를.

보통 나는 웹캠을 통해 내 사무실을 살펴보고

ssh Office -Y "mplayer tv://device=/dev/video0"

내 노트북에서. Xforwarding mplayer가 마음에 들지 않으므로 /dev/video랩톱에서 이것을 실행하여 PC로 터널링 할 수없는 이유는 무엇입니까?

sudo mkfifo /dev/video1
ssh Office 'dd if=/dev/video' | sudo dd of=/dev/video1'

웹캠을보고 (내 랩톱에서 )

mplayer tv://device=/dev/video1

답변:


14

다음과 같은 것 :

dd if=/dev/video0 | mplayer tv://device=/dev/stdin

로컬에서 나를 위해 일합니다 (SOA # 1). 그렇습니다 :

ssh localhost dd if=/dev/video0 | mplayer tv://device=/dev/stdin

만큼 잘

mkfifo test
dd if=/dev/video0 of=test &
mplayer tv://device=test

금후:

  1. 명명 된 파이프없이 시도
  2. 대역폭 확인

또한 -에서와 어떻게 하지 작업 (디스플레이 검은 화면 등 알 수없는 장치를 뿌려)?


내 mplayer에 문제가 있다고 생각합니다. 내가 실행 dd if=/dev/video0 | mplayer tv://device=/dev/stdin하면 리소스가 사용 중임을 나타냅니다. 그렇지 않으면 달리더라도 작동합니다 (비디오 참조)mplayer tv://device=/dev/null
Stefan

1
이 답변은 오해의 소지가 있습니다. 의 "올바른"호출 mplayer될 것이다 mplayer tv:// -tv device=/dev/stdin(문자 장치보다 더 특별하다 또는 유사하지만,이 작동하지 않습니다 dd제대로 처리 할 수 있습니다). 실행할 때 mplayer tv://device=/dev/stdin장치 사양이 표시되지 않아서 /dev/video0직접 다시 작동하여 "작동 중"이라는 느낌을줍니다. 그러나 웹캠과 mplayer프로세스가 네트워크로 분리되어 있으면 전혀 작동하지 않습니다 .
Daniel Wagner

예, 이것은 로컬 호스트에 SSH를 사용하기 때문에 제대로 작동하는 것처럼 보이지만 실제로는 실패하고 mplayer는 localhost의 / dev / video0으로 돌아갑니다. 이러한 명령을 다른 컴퓨터 (예 : localhost가 아닌)에 SSH로 연결하면 원격 웹캠이 아닌 로컬 웹캠이 표시됩니다.
Jason Antman

로컬 호스트에서 시도했지만 ssh localhost dd if=/dev/video0 | mplayer tv://device=/dev/stdin두 대의 다른 컴퓨터를 사용할 때 명령을 실행하는 방법은 무엇입니까?
Francesco Boi

mplayer tv://device=/dev/stdinOSX 의 대안은 무엇입니까 ?
Francesco Boi

14

대역폭이 낮은 경우 비디오 스트림을 압축하는 것이 좋습니다.

ssh USER@REMOTEHOST ffmpeg -an -f video4linux2 -s 640x480 -i /dev/video0 -r 10 -b:v 500k -f matroska - | mplayer - -idle -demuxer matroska

어디에

  • -an오디오 인코딩을 끕니다. 오디오 원하는 경우, 교체 -an-f alsa -ac 1 -i hw:3(3도 얼굴을가 될 수 : 0 또는 HW : 어디 HW를 1, ... 참조 arecord -l장치에 대한). 오디오 전용 (비디오)를 원하는 경우, 이것을 사용 )
  • -s 640x480 x 및 y 차원의 동영상 크기
  • -r 10 수신하려는 프레임 속도입니다 (낮을수록 낮은 비트 전송률로 더 나은 이미지를 만들지 만 더 많은 붐비가 보입니다)
  • -b:v 500k 500 킬로 비트 / 초의 비트 전송률입니다

원격 호스트에는 ffmpeg가 설치되어 있고 로컬 시스템에는 mplayer가 필요합니다.


4

가 VideoLAN 프로젝트는 당신이 원하는 무엇을 바로 할 큰 부분에 존재합니다.

스트리밍 기능을 사용하지는 않았지만 단일 머신 사용에서는 견고합니다.


이 시나리오를 자세히 설명해 주시겠습니까?
MikeW

1

수락 된 답변이 저에게 효과적이지 않습니다. dd단순히 읽지 않을 것입니다. nc다른 포트를 절약 할 수 없다면 나쁘지 않습니다 (어쨌든 전혀 작동하지 않습니다). cat나에게도 효과가 없었습니다.

나를 위해 일한 것은 수신 측에서 이것이었습니다.

ssh user@host "ffmpeg  -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | mplayer - -idle

이것은 인코딩되는 이점이 있으므로 대역폭을 보너스로 절약 할 수 있습니다. 포럼 / 웹 사이트의 다른 어떤 것도 데비안 머신에서 작동하지 않았습니다.


와 결합 하면 동시에보고 녹화 할 수 있습니다.

ssh user@host "ffmpeg  -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | tee $(date +%Y-%m-%d_%H-%M-%S)_recording.mkv | mplayer - -idle

라이브 스트리밍을 위해 mplayer를 열고 현재 날짜 시간을 포함하는 파일 (예 : 파일 이름 :)에 저장합니다 2018-11-22_01-22-10_recording.mkv.


0

당신이 그것을 할 수없는 이유가 있는지 모르겠지만, 구현에서 볼 수있는 한 가지 문제는 원격 시스템이 시스템에서 / dev / video1을 찾지 만 찾을 수는 없다는 것입니다. 로컬 시스템에서 생성했습니다.

내가 할 일은 다음과 같은 것입니다.

nc -l 12345 | sudo tee /dev/video > /dev/null &
ssh Office

그런 다음 로컬 시스템의 TCP 포트 12345로 이동하도록 지시하여 무언가를 시도하십시오.


나는 내 질문을 명확히하려고 노력했다. 업데이트 된 버전을 참조하십시오
Stefan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.