【发布时间】:2021-03-26 16:23:10
【问题描述】:
我有一个简单的 Python Flask 应用程序,用于返回我在服务器端(单独)生成的图像和音频。我的图像代码如下所示:
# various cv2 calls to generate an image
image_bytes = cv2.imencode('.png', image)
return Response(image_bytes[1].tobytes(), mimetype='image/png', status=200)
效果很好。但是,我似乎无法返回音频。这是代码:
AUDIO_FORMAT = 'audio/mp3'
headers = {"Content-Type": "application/json", "accept": AUDIO_FORMAT}
payload = {"text": text}
# call to generate audio from text
response = requests.post()
if response.status_code == 200:
sound_data = response.content
f = open('audio.mp3', 'wb')
f.write(sound_data)
f.close()
return Response(sound_data,
mimetype=AUDIO_FORMAT,
status=200)
当我播放 audio.mp3 文件时,我听到了我期望的音频。当响应在浏览器中呈现时,我得到了音频播放器。但我什么也没听到,我得到的长度是 00:00。我在想我缺少一个编码/翻译步骤。
【问题讨论】:
-
您提供的是音频绝对路径还是相对路径,请先检查一下
-
更多信息。我写的文件,我可以在浏览器中打开,它可以正常播放。当我将该音频文件写入 Flask
/static目录,然后使用return send_from_directory('static/audio', audio_filename)返回它时,我得到了相同的浏览器错误。在我看到的控制台中,Error: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand. -
是的,路径似乎不是问题。我可以把
.json或者.html文件和音频文件放在同一个目录下,用同样的代码返回,浏览器就理解了。 -
很高兴知道,如果您在这里没有得到任何解决方案,我建议您在 discord flask server 那里询问您肯定可以获得帮助