Aplay Piping к Arecord, используя файл вместо стандартного ввода и вывода - PullRequest
0 голосов
/ 07 июня 2018

Команда ниже запишет данные с устройства по умолчанию и выведет их на стандартный вывод, а aplay воспроизведет данные со стандартного ввода.

arecord -D hw:0  | aplay -D hw:1 -

Почему мы предпочитаем стандартный вывод и стандартный вывод вместо записи в файл и чтения изэто как ниже?

arecord -D hw:0 test.wav | aplay -D hw:1 test.wav

1 Ответ

0 голосов
/ 18 декабря 2018

Использование канала для этой операции более эффективно и эффективно, чем использование файла, просто по следующим причинам:

1) Канал (|) - это метод межпроцессного взаимодействия.Выходные данные одного процесса напрямую отправляются на вход другого процесса с использованием буфера на основе ядра.Так что это дает большую скорость, чем запись чего-либо в файл на жестком диске и чтение его с него.Однако это зависит и от других факторов.Как правило, ядро ​​также записывает и считывает небольшие файлы из буферов и дисковых кэшей.

2) Использование техники межпроцессного взаимодействия также помогает в получении параллельной работы.Вместо этого, если бы вам нужно было что-то записать в файл, а затем прочитать из него, это должно было бы быть выполнено поэтапно, чтобы вы потеряли параллелизм.

Я полагаю, вы имели в виду

arecord -D hw:0 test.wav && aplay -D hw:1 test.wav

вместо

arecord -D hw:0 test.wav | aplay -D hw:1 test.wav
...