Хотел бы воспроизвести преобразованный файл mp3 в base64 с помощью сценария bash.
Сначала я сделал это:
base64 notification.mp3 > notification.b64
затем я попытался воспроизвести уведомление.b4, но ни один из них не работал:
play notification.b64
cat notification.b64 /dev/snd/pcmC0D3p
play < $(cat notification.b64 | base64 --decode)
Я использую Debian Buster, поэтому нет /dev/audio или /dev/dsp.
Я пытаюсь поместить это в скрипт, чтобы избежать дополнительных файлов и иметь возможность воспроизводить base64 внутри переменной.
play notification.mp3 работает?
да, плей от сокса. Но это не то, чего я хочу. play notification.mp3 все в порядке, мне нужно воспроизвести аудиофайл, преобразованный в base64.
... | play -t mp3 - или play -t mp3 <( ... )@jhnc, спасибо! base64 -d notification.b64 | play -t mp3 - работает идеально! Пожалуйста, ответьте на вопрос, а не комментируйте, чтобы я мог проголосовать и выбрать ваш ответ.





Команда play (от sox) использует расширение имени файла, чтобы решить, какой тип файла она обрабатывает.
.b64Решение состоит в том, чтобы явно сообщить ему, какой ввод он должен ожидать. Для этого предусмотрена опция -t. Итак, в вашем случае вы можете сделать что-то вроде:
#!/bin/bash
read -d @ sound <<'EOD'
/+MYxAAHSAY1mADEAoG5jrkW2aFtGj0u7n/6Xfo/0v/Wz0f6f///9JzNKgW6
7P7E+nKHKgicW/7tOsdD/1n8v///1/+/0f9v/+MYxB0HwAadkACEAv+QBlsu
3t//+tD4Ok38Zg4EUmnBkJ1Zhfpm+tblDuoRkp1VGBcXsp03YO5ASaudJBBX
s//p/+7ff5vc/+MYxDkUWzKiWGlVMTn6EHgmin4mSv00b/vi71rJ///9glj3
c5UXrrXLZ9ZBZDQHcWtxqDKdMGY4NtDWXj3UiW1rOKP+ocR//+MYxCIUgzaR
mU1oAdS/6yTAwxsb1FZ5vX//9f6Dff6/pfprEKZpu1fMLeq7Og/61VMy7r2R
///+oGEpjyxsMjGTZncRYNGh/+MYxAsPg0qYIYVQAKxkDrB9liFLdJtf6zlT
4hXn9AHiRS7ZwUImG//////9ib/yg0/+rf///////sX//8p/lsAi+UlXNJX6
/+MYxAgIYAZqWcAYAIOJxFT9/z3qPcRHqP8t///O/lv/1HuCv+IlTEFNRTMu
MTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
EOD
echo "$sound" | base64 --decode | play -t mp3 -
sox -h должен отображать все форматы, которые понимает ваша версия. (Например, в Ubuntu для работы с mp3 требуется установка дополнительной библиотеки). См. также soxformat(7) для более подробной информации.
из какой посылки
play?dpkg -S $(realpath $(which play))