OK, acabei de encontrar e ainda funciona! Realmente engraçado. Você não precisa de aplicativos sofisticados, mensageiros instantâneos ou similares. Com este comando, você envia seu áudio para o host remoto.
arecord -f cd -t raw | oggenc - -r | ssh <user>@<remotehost> mplayer -
Ou se você gosta mais do ffmpeg
ffmpeg -f alsa -ac 1 -i hw:3 -f ogg - \
| ssh <user>@<remotehost> mplayer - -idle -demuxer ogg
Fonte: http://shmerl.blogspot.de/2011/06/some-fun-with-audio-forwarding.html
Se você deseja um telefone real:
O comando acima foi apenas para uma direção. Para a outra direção, você deve iniciar outra sessão ssh. Portanto, para receber o que o outro usuário diz a você, use
ssh <user>@<remotehost> 'arecord -f cd -t raw | oggenc - -r' | mplayer -
Ou se você gosta mais do ffmpeg
ssh <user>@<remotehost> ffmpeg -f alsa -ac 1 -i hw:3 -f ogg - \
| mplayer - -idle -demuxer ogg
onde hw:3
está o outro dispositivo que você deseja gravar (localize-o arecord -l
; você também pode usar um nome de dispositivo, localize-o com arecord -L
; em muitos casos, você pode apenas usar o dispositivo listado com o seguinte comando arecord -L | grep sysdefault
:).
Atualizar
Em 2018, nos meus sistemas Fedora Linux, ffmpeg
não há suporte para alsa incluído (parece ser o mesmo nos sistemas RaspberryPi com Raspbian). Mas existe uma solução simples sem recompilar. Basta canalizar a saída do arecord (o alsarecorder) para o ffmpeg:
ssh <user>@<remotehost> 'arecord -f cd -D plughw:2 | ffmpeg -ac 1 -i - -f ogg -' \
| mplayer - -idle -demuxer ogg
Você obtém o dispositivo de entrada localizando- plughw:2
o na saída do seguinte comando:
arecord -l
No meu caso, eu vejo card0
e card2
(minha webcam que tem microfone). Então eu escrevi plughw:2
para card2
.
Atualização 2 (sem mplayer)
Se você não tem ou gosta, mplayer
mas ffplay
(do qual faz parte ffmpeg
), pode usar:
áudio wave não comprimido (largura de banda alta, uso de CPU muito baixo no lado da gravação)
ssh <user>@<remotehost> "arecord -f cd -D plughw:2" | ffplay -nodisp -
compactado com flac (baixa largura de banda, baixo uso da CPU no lado da gravação)
ssh <user>@<remotehost> "arecord -f cd -D plughw:2 | flac - -o -" | ffplay -nodisp -
compactado com ogg (largura de banda muito baixa, alto uso da CPU no lado da gravação)
ssh <user>@<remotehost> "arecord -f cd -D plughw:2 | oggenc -" | ffplay -nodisp -
cat - | mplayer -
vez de apenasmplayer -
?A resposta de Erik funciona bem, mas usando como está, usando
flac
ouoggenc
, há um atraso significativo.Uma solução é adicionar
-cache 256
aomplayer
comando, para que fique da seguinte maneira:Outra coisa a mencionar é que hoje em dia praticamente todas as distribuições modernas usam o PulseAudio, que assume o controle sobre o dispositivo de hardware; portanto, o uso
plughw:2
falhará se o PulseAudio estiver em execução.Geralmente,
default
deve funcionar bem e usar o PulseAudio, onde você pode usarpavucontrol
ou semelhante para selecionar a fonte de entrada desejada usando o PulseAudio.Isso faria o comando da seguinte maneira:
MAS: Isso introduz um atraso. No meu caso, são cerca de oito segundos. Isso é terrível.
A solução é muito mais simples do que qualquer outro comando:
É isso aí. Isso está usando quase nenhuma CPU (0,1% de acordo com
htop
). Ele está usando ~ 60KB / s de largura de banda para mim.Se você deseja som estéreo:
ssh <user>@<host> "arecord -f cd" | aplay
Útil apenas se você tiver um microfone estéreo, aumenta a largura de banda para ~ 150 KB / s para mim. (Como também aumenta a taxa de amostragem para 44100Hz).
Mais informações sobre taxa de amostragem (
-r
) e taxa de bits (afetadas por-f
) podem ser encontradas aqui .Basicamente: quanto mais baixo você for, pior será a qualidade, mas menor será a largura de banda necessária.
Esta solução é totalmente compatível com o PulseAudio, você pode controlar o dispositivo de saída, o volume e muito mais usando
pactl
ou opavucontrol
aplicativo GUI:fonte