SSH를 통해 사운드 (마이크)를 리디렉션, SSH를 통해 전화하는 방법?


47

ssh를 통해 한 컴퓨터의 마이크를 다른 컴퓨터에서 들으려면 어떻게 리디렉션합니까? 올바른 장치 또는 올바른 명령 줄은 무엇입니까?

몇 년 전, 원격 마이크에서 로컬 컴퓨터로 또는 그 반대로 사운드를 리디렉션하는 것이 쉽고 재미있었습니다. 쉬운 전화였습니다. 있습니다 어떤 지시 그것을 위해,하지만 그들 중 누구도 최신 컴퓨터 / 리눅스 배포판에 제대로 작동하지 않습니다. /dev/audio내 컴퓨터 에는 기능이 없습니다 (Fedora 17).

펄스 오디오와 관련이 있다고 생각합니다. 아니면이 간단한 전화기에 펄스 오디오가 필요하지 않습니까? 올바른 장치는 무엇입니까?

시작 alsamixer하고 F6 키를 누르면 모든 사운드 장치를 볼 수 있습니다 . 그러나 내 /dev트리 의 장치가 무엇인지 모르겠습니다 .

답변:


53

좋아, 방금 찾았는데 여전히 작동합니다! 정말 재밌어요 멋진 응용 프로그램, 인스턴트 메신저 등이 필요하지 않습니다. 이 명령을 사용하면 오디오 를 원격 호스트로 보냅니다 .

arecord -f cd -t raw | oggenc - -r | ssh <user>@<remotehost> mplayer -

또는 ffmpeg를 더 좋아한다면

ffmpeg -f alsa -ac 1 -i hw:3 -f ogg - \
    | ssh <user>@<remotehost> mplayer - -idle -demuxer ogg

출처 : http://shmerl.blogspot.de/2011/06/some-fun-with-audio-forwarding.html


실제 전화를 원할 경우 :

위의 명령은 한 방향으로 만 사용되었습니다. 다른 방향으로는 다른 ssh 세션을 시작해야합니다. 따라서 다른 사용자 가 귀하에게 말한 내용받으려면

ssh <user>@<remotehost> 'arecord -f cd -t raw | oggenc - -r' | mplayer -

또는 ffmpeg를 더 좋아한다면

ssh <user>@<remotehost> ffmpeg -f alsa -ac 1 -i hw:3 -f ogg - \
    | mplayer - -idle -demuxer ogg

어디에 hw:3기록하고 싶은 alsadevice가 있는가? ( arecord -l이것으로 검색하십시오 arecord -L; 또한 장치 이름을 사용하여 찾을 수 있습니다; 대부분의 경우 다음 명령으로 나열된 장치를 사용할 수 있습니다 :) arecord -L | grep sysdefault.

최신 정보

2018 년 Fedora Linux 시스템 ffmpeg에는 alsa 지원이 포함되어 있지 않습니다 (Raspbian이 설치된 RaspberryPi 시스템에서 동일하게 보입니다). 그러나 재 컴파일하지 않은 간단한 솔루션이 있습니다. 그냥 파이프 출력 는 FFmpeg에 arecord합니다 (alsarecorder)의 :

ssh <user>@<remotehost> 'arecord -f cd -D plughw:2 | ffmpeg -ac 1 -i - -f ogg -' \
    | mplayer - -idle -demuxer ogg

plughw:2다음 명령의 출력에서 장치 를 찾아 입력 장치 를 얻습니다 .

arecord -l

필자의 경우 card0card2(마이크가있는 웹캠)이 표시됩니다. 그래서 나는 썼다 plughw:2을 위해 card2.

업데이트 2 (mplayer 제외)

가지고 있지 않거나 좋아 mplayer하지만 ffplay(의 일부 ffmpeg)를 사용하면 다음을 사용할 수 있습니다.

  • 비 압축 웨이브 오디오 (기록 측의 높은 대역폭, 매우 낮은 CPU 사용량)

    ssh <user>@<remotehost> "arecord -f cd -D plughw:2" | ffplay -nodisp -
    
  • flac로 압축 (레코딩 측에서 낮은 대역폭, 낮은 CPU 사용량)

    ssh <user>@<remotehost> "arecord -f cd -D plughw:2 | flac - -o -" | ffplay -nodisp -
    
  • ogg로 압축 (기록 측에서 매우 낮은 대역폭, 높은 CPU 사용량)

    ssh <user>@<remotehost> "arecord -f cd -D plughw:2 | oggenc -" | ffplay -nodisp -
    

1
당신이 cat - | mplayer -대신하는 일이 mplayer -있습니까?
Chris Down

그 이유는 다음과 같습니다. 인용 된 소스에서 명령을 복사했습니다. 중복 될 수 있습니다. 삭제했지만 여전히 작동하는 것 같습니다. 어쩌면 필요한 경우가 있으며 저자는 자신의 게시물에서 그것을 알리지 않고 그것에 대해 알았습니까?
erik

3

에릭의 대답은 잘 작동하지만,이 방법을 사용하여, 사용 flac또는 oggenc상당한 지연이있다.
해결책은 추가하는 것입니다 -cache 256받는 mplayer명령, 그래서 다음과 같이 보일 것입니다 :

ssh <user>@<remotehost> "arecord -f cd -D plughw:2 | oggenc -" | mplayer -cache 256 -

또 다른 언급은 요즘 거의 모든 최신 배포판에서 하드웨어 장치를 제어 plughw:2하는 PulseAudio를 사용하므로 PulseAudio가 실행 중이면 사용 이 실패한다는 것입니다.
일반적으로 defaultPulseAudio를 사용 pavucontrol하여 원하는 입력 소스를 선택하기 위해 사용 하거나 유사하게 사용할 수있는 PulseAudio를 사용해야 합니다.

그러면 명령이 다음과 같이됩니다.

ssh <user>@<remotehost> "arecord -f cd | oggenc -" | mplayer -cache 256 -

그러나 이것은 지연을 초래합니다. 제 경우에는 약 8 초입니다. 끔찍 해요


해결책은 다른 명령보다 훨씬 간단합니다.

ssh <user>@<host> "arecord -f S16_LE -r 36000" | aplay

그게 다야. 이것은 거의 모든 CPU를 사용하고 있습니다 (에 따라 0.1 % htop). ~ 60KB / s의 대역폭을 사용하고 있습니다.

스테레오 사운드를 원하는 경우 : ssh <user>@<host> "arecord -f cd" | aplay
스테레오 마이크가있는 경우에만 유용합니다. 대역폭이 ~ 150KB / s로 증가합니다. (또한 샘플링 속도를 44100Hz로 높입니다).

샘플링 레이트 (에 대한 정보 -r) 및 (영향 비트 레이트 -f)를 찾을 수있다 여기 .
기본적으로 : 품질이 낮을수록 품질은 떨어지지 만 필요한 대역폭은 낮아집니다.

이 솔루션은 출력 장치, 볼륨 및 더 많은 사용하여 제어 할 수 있습니다, 펄스 오디오와 완벽하게 호환됩니다 pactl또는 pavucontrolGUI 응용 프로그램을 :

Pavucontrol

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.