SSH를 통해 /dev/video를 전송할 수 있나요?

SSH를 통해 /dev/video를 전송할 수 있나요?

컴퓨터가 두 대 있는데, 한 대는데스크탑내 사무실에는 (다음이 있다.카메라첨부)와랩탑웹의 다른 곳.

저는 보통 웹캠을 켜서 사무실을 봅니다.

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

내 노트북에서. 저는 Xforwarding mplayer를 좋아하지 않는데 왜 /dev/video노트북에서 실행하여 컴퓨터로 터널링할 수 없나요?

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

그런 다음 웹캠을 시청하세요(내랩탑)

mplayer tv://device=/dev/video1

답변1

대역폭이 낮은 경우 비디오 스트림을 압축하는 것이 좋습니다(2020년에도 유효함).

그리고 ffmpeg그리고mplayer

ssh USERNAME@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(여기서 hw:3은 hw:0 또는 hw:1일 수도 있습니다.... arecord -l장치를 참조하세요). 오디오만 원하는 경우(비디오는 필요하지 않음)이것을 사용)
  • -s 640x480비디오의 x 및 y 치수 크기입니다.
  • -r 10수신하려는 프레임 속도입니다(프레임 속도가 낮을수록 낮은 비트 전송률에서 더 나은 이미지를 제공하지만 더 투박해 보입니다).
  • -b:v 500k비트 전송률 500kbit/s

원격 호스트에 ffmpeg를 설치하고 로컬 컴퓨터에 mplayer를 설치해야 합니다.

그리고 ffmpeg그리고mpv

ssh USERNAME@REMOTEHOST ffmpeg -an -f video4linux2 -s 640x480 -i /dev/video0 -r 10 -b:v 500k -f matroska - | mpv --demuxer=mkv /dev/stdin

그리고 ffmpeg그리고ffplay

ssh USERNAME@REMOTEHOST ffmpeg -an -f video4linux2 -s 640x480 -i /dev/video0 -r 10 -b:v 500k -f matroska - | ffplay -f matroska /dev/stdin

답변2

그것은 다음과 같습니다:

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. 대역폭 확인

또한 - 방법아니요업무(검은색 화면 표시, 알 수 없는 장치에 대한 불만 등)?

답변3

허용되는 답변이 나에게 적합하지 않습니다. 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)에 저장됩니다.

답변4

이 작업을 수행할 수 없는 이유가 있는지는 모르겠지만 구현에서 발견한 한 가지 문제는 원격 시스템이 해당 시스템에서 /dev/video1을 찾지만 사용자가 생성했기 때문에 찾을 수 없다는 것입니다. 로컬 시스템에서 확인했습니다.

내가하고 싶은 일은 다음과 같습니다

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

그런 다음 로컬 시스템의 TCP 포트 12345로 이동하여 일부 작업을 시도하도록 지시합니다.

관련 정보