ssh를 통해 한 컴퓨터의 마이크를 다른 컴퓨터에서 들으려면 어떻게 리디렉션합니까? 올바른 장치 또는 올바른 명령 줄은 무엇입니까?
몇 년 전, 원격 마이크에서 로컬 컴퓨터로 또는 그 반대로 사운드를 리디렉션하는 것이 쉽고 재미있었습니다. 쉬운 전화였습니다. 있습니다 어떤 지시 그것을 위해,하지만 그들 중 누구도 최신 컴퓨터 / 리눅스 배포판에 제대로 작동하지 않습니다. /dev/audio
내 컴퓨터 에는 기능이 없습니다 (Fedora 17).
펄스 오디오와 관련이 있다고 생각합니다. 아니면이 간단한 전화기에 펄스 오디오가 필요하지 않습니까? 올바른 장치는 무엇입니까?
시작 alsamixer
하고 F6 키를 누르면 모든 사운드 장치를 볼 수 있습니다 . 그러나 내 /dev
트리 의 장치가 무엇인지 모르겠습니다 .
답변
좋아, 방금 찾았는데 여전히 작동합니다! 정말 재밌어요 멋진 응용 프로그램, 인스턴트 메신저 등이 필요하지 않습니다. 이 명령을 사용하면 오디오 를 원격 호스트로 보냅니다 .
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
필자의 경우 card0
및 card2
(마이크가있는 웹캠)이 표시됩니다. 그래서 나는 썼다 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 -
답변
에릭의 대답은 잘 작동하지만,이 방법을 사용하여, 사용 flac
또는 oggenc
상당한 지연이있다.
해결책은 추가하는 것입니다 -cache 256
받는 mplayer
명령, 그래서 다음과 같이 보일 것입니다 :
ssh <user>@<remotehost> "arecord -f cd -D plughw:2 | oggenc -" | mplayer -cache 256 -
또 다른 언급은 요즘 거의 모든 최신 배포판에서 하드웨어 장치를 제어 plughw:2
하는 PulseAudio를 사용하므로 PulseAudio가 실행 중이면 사용 이 실패한다는 것입니다.
일반적으로 default
PulseAudio를 사용 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
또는 pavucontrol
GUI 응용 프로그램을 :