python - 如何从内存中包含.wav文件的zip文件播放HTML页面上的音频文件?

标签 python flask audio

我正在构建一个Webapp,将从API调用中获取一个zip文件。该Zipfile包含一个音频文件,我必须在浏览器中播放该文件。我无法将音频文件存储在服务器上并回读它们。

这是我的 flask 网页,它呈现download.html网页。

zipped_file = io.BytesIO(out_bytes) 
with ZipFile(zipped_file, 'r') as zf:
        zf.printdir()
        filename = zf.infolist()[0].filename
        buff = zf.read(filename) 

 return render_template('download.html', value = buff)

在download.html中,我必须播放我们解压缩后的文件中的音频。

<audio controls controlsList="nodownload">
   <source src="{{value}}">
   Your browser does not support the audio element.
 </audio>

我是flask的新手,如果您对如何播放音频而不将其存储在服务器中有任何想法,请告诉我。

谢谢。

最佳答案

您应该能够对您的buff字节进行base64编码,然后为src属性添加data:audio/wav;base64,前缀:

import base64
zipped_file = io.BytesIO(out_bytes) 
with ZipFile(zipped_file, 'r') as zf:
    zf.printdir()
    filename = zf.infolist()[0].filename
    buff = zf.read(filename)
    encoded = base64.b64encode(buff)

return render_template('download.html', value = encoded)
<audio controls controlsList="nodownload">
    <source src="data:audio/wav;base64,{{value}}">
    Your browser does not support the audio element.
</audio>

关于python - 如何从内存中包含.wav文件的zip文件播放HTML页面上的音频文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58410042/

相关文章:

templates - 在 Jinja2 中,什么时候应该使用宏,什么时候应该使用包含?

Java 等效于 C++ sf_readf_double()

python - Python 中的线程与进程

python - 如何在Python正则表达式中使用变量

python - 如何将 Base64 图像字符串从 Flask Python 代码传递到 HTML?

c# - Sox绝对路径和管道

html - 谷歌翻译 TTS 问题

python - 设计 .IntegerField() 使其成为星级系统?

python - 如何将数据框拆分为两行,其中两列具有特定值?

Python3错误的字符串编码