Я хочу создать fifo с arecord и aplay в raspberry pi3. Когда я отправляю музыкальный сигнал с аудиоинжектора на одном конце, он отображается правильно, но отключает музыку на другом конце. Я использую "arecord -f S16_LE -r 44100 -V stereo -c1 -D plughw:2 | aplay -D plughw:2"
Подскажите, пожалуйста, как решить эту проблему и как остановить эту команду без использования ctrl+c ???
решение1
Не уверен, что вы пытаетесь сделать, в частности я не понимаю "отключить музыку на другом конце", но
1) Пересылка аудиопотоков в Pulseaudio (или jack) намного проще, чем в ALSA.
2) При использовании arecord
в канале не используйте формат WAV, поскольку заголовок WAV имеет запись длины, которая не может быть заполнена в канале. Либо используйте raw ( -t raw
) и укажите правильные параметры в aplay
, либо используйте аудиоформат SUN ( -t au
).
3) Канал arecord-aplay будет работать, пока вы его не остановите с помощью ctrl-c, или пока один или оба процесса не будут завершены (с помощью kill
). Другого способа сделать это нет.
решение2
Чтобы остановить команду, добавьте переменную длительности (-d) в секундах к записи следующим образом:
arecord -f S16_LE -r 44100 -V stereo -c1 -d2 -D plughw:2 | aplay -D plughw:2
Эта команда остановит запись через -d2 или 2 секунды.
Если вы используете команду alsamixer, вы можете изменить настройки микшера. Это позволит вам выбрать вход (микрофон или линия), а также включить выход hifi (чтобы слышать звук), а также вы можете включить режим обхода, который будет направлять аудиовход напрямую на выход через аналоговую систему, а не через ЦП. В режиме обхода вы все еще можете использовать arecord для захвата сигнала.