OK, właśnie go znalazłem i nadal działa! Naprawdę śmieszne. Nie potrzebujesz żadnych wymyślnych aplikacji, komunikatorów itp. Za pomocą tego polecenia wysyłasz dźwięk do zdalnego hosta.
arecord -f cd -t raw | oggenc - -r | ssh <user>@<remotehost> mplayer -
Lub jeśli bardziej lubisz ffmpeg
ffmpeg -f alsa -ac 1 -i hw:3 -f ogg - \
| ssh <user>@<remotehost> mplayer - -idle -demuxer ogg
Źródło: http://shmerl.blogspot.de/2011/06/some-fun-with-audio-forwarding.html
Jeśli chcesz prawdziwy telefon:
Powyższe polecenie dotyczyło tylko jednego kierunku. W innym kierunku musisz rozpocząć kolejną sesję ssh. Tak więc, aby otrzymać to, co mówi ci inny użytkownik , użyj
ssh <user>@<remotehost> 'arecord -f cd -t raw | oggenc - -r' | mplayer -
Lub jeśli bardziej lubisz ffmpeg
ssh <user>@<remotehost> ffmpeg -f alsa -ac 1 -i hw:3 -f ogg - \
| mplayer - -idle -demuxer ogg
gdzie hw:3
znajduje się urządzenie, które chcesz nagrać (znajdź go arecord -l
; możesz również użyć nazwy urządzenia, znajdź to za pomocą arecord -L
; w wielu przypadkach możesz po prostu użyć urządzenia wymienionego za pomocą następującego polecenia :) arecord -L | grep sysdefault
.
Aktualizacja
W 2018 r. Na moich systemach Linux Fedora ffmpeg
nie ma obsługi alsa (wydaje się, że jest tak samo na systemach RaspberryPi z Raspbian). Ale istnieje proste rozwiązanie bez ponownej kompilacji. Po prostu potokuj wyjście arecord (alsarecorder) do ffmpeg:
ssh <user>@<remotehost> 'arecord -f cd -D plughw:2 | ffmpeg -ac 1 -i - -f ogg -' \
| mplayer - -idle -demuxer ogg
Otrzymujesz urządzenie wejściowe, plughw:2
znajdując je w danych wyjściowych następującego polecenia:
arecord -l
W moim przypadku widzę card0
i card2
(moja kamera internetowa z mikrofonem). Więc napisałem plughw:2
dla card2
.
Aktualizacja 2 (bez MPlayera)
Jeśli nie masz lub nie lubisz, mplayer
ale ffplay
(co jest częścią ffmpeg
), możesz użyć:
nieskompresowany dźwięk falowy (wysoka przepustowość, bardzo niskie zużycie procesora po stronie nagrywania)
ssh <user>@<remotehost> "arecord -f cd -D plughw:2" | ffplay -nodisp -
skompresowany flac (niska przepustowość, niskie zużycie procesora po stronie nagrywania)
ssh <user>@<remotehost> "arecord -f cd -D plughw:2 | flac - -o -" | ffplay -nodisp -
skompresowany z ogg (bardzo mała przepustowość, wysokie użycie procesora po stronie nagrywania)
ssh <user>@<remotehost> "arecord -f cd -D plughw:2 | oggenc -" | ffplay -nodisp -
cat - | mplayer -
zamiast tegomplayer -
?Odpowiedź Erika działa dobrze, ale używanie jej takim, jakim jest, używanie
flac
luboggenc
, istnieje znaczne opóźnienie.Rozwiązaniem jest dodanie
-cache 256
domplayer
polecenia, aby wyglądało to następująco:Inną rzeczą, o której należy wspomnieć, jest fakt, że obecnie prawie każda nowoczesna dystrybucja korzysta z PulseAudio, która przejmuje kontrolę nad urządzeniem sprzętowym, dlatego korzystanie
plughw:2
nie powiedzie się, jeśli PulseAudio jest uruchomione.Ogólnie rzecz biorąc,
default
powinien działać dobrze i korzystać z PulseAudio, gdzie można użyćpavucontrol
lub podobnego, aby wybrać żądane źródło wejściowe za pomocą PulseAudio.Dzięki temu polecenie będzie wyglądać następująco:
ALE: To wprowadza opóźnienie. W moim przypadku jest to około ośmiu sekund. To straszne.
Rozwiązanie jest znacznie prostsze niż jakiekolwiek inne polecenie:
Otóż to. Wykorzystuje to prawie żaden procesor (zgodnie z 0,1%
htop
). Wykorzystuje dla mnie ~ 60KB / s przepustowości.Jeśli chcesz dźwięku stereo:
ssh <user>@<host> "arecord -f cd" | aplay
Przydaje się tylko, jeśli masz mikrofon stereo, dla mnie zwiększa przepustowość do ~ 150 KB / s. (Ponieważ podnosi również częstotliwość próbkowania do 44100 Hz).
Więcej informacji na temat częstotliwości próbkowania (
-r
) i częstości bitów (na które ma wpływ-f
) można znaleźć tutaj .Zasadniczo: im niższy poziom, tym gorsza jakość, ale mniejsza wymagana przepustowość.
To rozwiązanie jest w pełni kompatybilne z PulseAudio, możesz kontrolować urządzenie wyjściowe, głośność i więcej za pomocą
pactl
lubpavucontrol
aplikacji GUI:źródło