OK, saya baru saja menemukannya, dan masih berfungsi! Sangat lucu. Anda tidak memerlukan aplikasi mewah, pengirim pesan instan atau sejenisnya. Dengan perintah ini Anda mengirim audio ke host jarak jauh.
arecord -f cd -t raw | oggenc - -r | ssh <user>@<remotehost> mplayer -
Atau jika Anda suka ffmpeg lebih baik
ffmpeg -f alsa -ac 1 -i hw:3 -f ogg - \
| ssh <user>@<remotehost> mplayer - -idle -demuxer ogg
Sumber: http://shmerl.blogspot.de/2011/06/some-fun-with-audio-forwarding.html
Jika Anda menginginkan telepon nyata:
Perintah di atas hanya untuk satu arah. Untuk arah lain Anda harus memulai sesi ssh lainnya. Jadi, untuk menerima apa yang dikatakan pengguna lain kepada Anda, gunakan
ssh <user>@<remotehost> 'arecord -f cd -t raw | oggenc - -r' | mplayer -
Atau jika Anda suka ffmpeg lebih baik
ssh <user>@<remotehost> ffmpeg -f alsa -ac 1 -i hw:3 -f ogg - \
| mplayer - -idle -demuxer ogg
di mana hw:3
alsadevice yang ingin Anda rekam (temukan dengan arecord -l
; Anda juga dapat menggunakan nama perangkat, temukan ini dengan arecord -L
; dalam banyak kasus Anda bisa menggunakan perangkat yang terdaftar dengan perintah berikut:) arecord -L | grep sysdefault
.
Memperbarui
Pada tahun 2018 pada sistem Fedora Linux saya ffmpeg
tidak termasuk dukungan alsa (tampaknya sama pada sistem RaspberryPi dengan Raspbian). Tetapi ada solusi sederhana tanpa kompilasi ulang. Cukup pipa output dari arecord (alsarecorder) ke ffmpeg:
ssh <user>@<remotehost> 'arecord -f cd -D plughw:2 | ffmpeg -ac 1 -i - -f ogg -' \
| mplayer - -idle -demuxer ogg
Anda mendapatkan perangkat input plughw:2
dengan menemukan perangkat Anda di output dari perintah berikut:
arecord -l
Dalam kasus saya, saya melihat card0
dan card2
(webcam saya yang memiliki mikrofon). Jadi saya menulis plughw:2
untuk card2
.
Perbarui 2 (tanpa mplayer)
Jika Anda tidak memiliki atau suka mplayer
tetapi ffplay
(yang merupakan bagian dari ffmpeg
) Anda dapat menggunakan:
audio gelombang terkompresi (bandwidth tinggi, penggunaan CPU sangat rendah di sisi perekaman)
ssh <user>@<remotehost> "arecord -f cd -D plughw:2" | ffplay -nodisp -
dikompresi dengan flac (bandwidth rendah, penggunaan cpu rendah di sisi perekaman)
ssh <user>@<remotehost> "arecord -f cd -D plughw:2 | flac - -o -" | ffplay -nodisp -
dikompresi dengan ogg (bandwidth sangat rendah, penggunaan cpu tinggi di sisi perekaman)
ssh <user>@<remotehost> "arecord -f cd -D plughw:2 | oggenc -" | ffplay -nodisp -
cat - | mplayer -
bukan hanyamplayer -
?Jawaban Erik bekerja dengan baik, tetapi bagaimana menggunakannya, menggunakan
flac
atauoggenc
, ada jeda yang signifikan.Sebuah solusi adalah dengan menambahkan
-cache 256
kemplayer
perintah, sehingga akan terlihat sebagai berikut:Hal lain yang perlu disebutkan adalah bahwa saat ini hampir setiap distribusi modern menggunakan PulseAudio, yang mengambil kendali atas perangkat keras, oleh karena itu penggunaan
plughw:2
akan gagal jika PulseAudio sedang berjalan.Secara umum,
default
harus berfungsi dengan baik dan menggunakan PulseAudio, di mana Anda dapat menggunakanpavucontrol
atau serupa untuk memilih sumber input yang Anda inginkan menggunakan PulseAudio.Itu akan membuat perintah sebagai berikut:
TAPI: Ini menimbulkan kelambatan. Dalam kasus saya, sekitar delapan detik. Itu buruk.
Solusinya jauh lebih sederhana daripada perintah lain:
Itu dia. Ini menggunakan hampir semua CPU (0,1% menurut
htop
). Ini menggunakan ~ 60KB / s bandwidth untuk saya.Jika Anda ingin suara stereo:
ssh <user>@<host> "arecord -f cd" | aplay
Hanya berguna jika Anda memiliki mikrofon stereo, meningkatkan bandwidth hingga ~ 150KB / s untuk saya. (Karena itu juga meningkatkan laju sampling ke 44100Hz).
Informasi lebih lanjut tentang laju sampling (
-r
) dan laju bit (dipengaruhi oleh-f
) dapat ditemukan di sini .Pada dasarnya: Semakin rendah Anda pergi, semakin buruk kualitas tetapi semakin rendah bandwidth yang dibutuhkan.
Solusi ini sepenuhnya kompatibel dengan PulseAudio, Anda dapat mengontrol perangkat output, volume, dan lainnya menggunakan
pactl
ataupavucontrol
aplikasi GUI:sumber