Команда воспроизведения (из 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) для более подробной информации.