如何使用bash脚本从base64转换文件播放声音?

问题描述 投票:0回答:1

想使用bash脚本在base64中播放mp3转换文件。

首先我做了这个: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。

linux bash audio base64
1个回答
2
投票

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)。

© www.soinside.com 2019 - 2024. All rights reserved.