Ответ Эрика работает хорошо, но используя его, как есть, используя flac
или oggenc
, есть существенное отставание.
Решение состоит в том, чтобы добавить -cache 256
к mplayer
команде, так что это будет выглядеть следующим образом :
ssh <user>@<remotehost> "arecord -f cd -D plughw:2 | oggenc -" | mplayer -cache 256 -
Еще одна вещь, которую стоит упомянуть, - это то, что в настоящее время практически каждый современный дистрибутив использует PulseAudio, который берет на себя управление аппаратным устройством, поэтому использование не plughw:2
будет работать, если PulseAudio работает.
Как правило, default
должно работать нормально и использовать PulseAudio, где вы можете использовать pavucontrol
или подобное, чтобы выбрать нужный источник входного сигнала с помощью PulseAudio.
Это сделало бы команду следующим образом:
ssh <user>@<remotehost> "arecord -f cd | oggenc -" | mplayer -cache 256 -
НО: Это вводит отставание. В моем случае это около восьми секунд. Это ужасно.
Решение намного проще, чем любая другая команда:
ssh <user>@<host> "arecord -f S16_LE -r 36000" | aplay
Вот и все. Это использует только любой процессор (0,1% в соответствии с htop
). Для меня он использует пропускную способность ~ 60 КБ / с.
Если вы хотите стереозвук: ssh <user>@<host> "arecord -f cd" | aplay
полезно, только если у вас есть стереомикрофон, для меня увеличивается пропускная способность до ~ 150 КБ / с. (Так как это также увеличивает частоту дискретизации до 44100 Гц).
Более подробную информацию о частоте дискретизации ( -r
) и битовой скорости (зависит от -f
) можно найти здесь .
По сути: чем ниже вы идете, тем хуже качество, но ниже необходимая пропускная способность.
Это решение полностью совместимо с PulseAudio, вы можете контролировать выходное устройство, громкость и многое другое с помощью pactl
или pavucontrol
приложения с графическим интерфейсом:
cat - | mplayer -
вместо простоmplayer -
?