Как воспроизвести звук из конвертированных в base64 файлов, используя скрипт bash? - PullRequest
0 голосов
/ 11 апреля 2019

Хотите воспроизвести конвертированный в mp3 файл в base64, используя скрипт bash.

Сначала я сделал это: base64 notification.mp3 > notification.b64

Затем я попытался воспроизвести Notification.b4, но ни один из них не сработал:

play notification.b64
cat notification.b64 /dev/snd/pcmC0D3p
play < $(cat notification.b64 | base64 --decode)

Я использую Debian Buster, поэтому нет / dev / audio или /dev/dsp.

Я пытаюсь поместить это в скрипт, чтобы избежать дополнительных файлов и иметь возможность воспроизводить base64 внутри переменной.

1 Ответ

2 голосов
/ 13 апреля 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...