【问题标题】:How to play sound from base64 converted files using bash script?如何使用 bash 脚本从 base64 转换的文件中播放声音?
【发布时间】:2019-04-11 15:36:02
【问题描述】:

想使用 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。

【问题讨论】:

  • play 来自哪个包? dpkg -S $(realpath $(which play))
  • play notification.mp3 工作吗?
  • 是的,play 来自 sox。但这不是我想要的。 play notification.mp3 可以,我需要播放base64转换的音频文件。
  • ... | play -t mp3 -play -t mp3 &lt;( ... )
  • @jhnc 谢谢! base64 -d notification.b64 | play -t mp3 - 完美!请回答问题,不要发表评论,以便我投票并选择您的答案。

标签: linux bash audio base64


【解决方案1】:

播放命令(来自 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)。

【讨论】:

    猜你喜欢
    • 2010-11-11
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 2014-05-09
    • 2010-09-12
    • 2012-10-01
    • 2014-06-08
    相关资源
    最近更新 更多