浏览器不播放 Python Flask 返回的音频
Browser not playing audio returned with Python Flask
我有一个简单的 Python Flask 应用程序,用于 return 我生成服务器端(单独)的图像和音频。我的图像代码如下所示:
# various cv2 calls to generate an image
image_bytes = cv2.imencode('.png', image)
return Response(image_bytes[1].tobytes(), mimetype='image/png', status=200)
效果很好。但是,我似乎收不到 return 音频。这是代码:
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 的长度。我想我缺少一个 encoding/translation 步骤。
事实证明,我在将音频写入文件并返回该文件的正确路径上。在我的第一条评论中,我声明将音频写入文件并使用 send_from_directory
失败。嗯,它是,但由于一个单独的错误。一旦我解决了这个问题,它就起作用了。
return send_from_directory('static/audio', file_name)
我想我明白为什么我原来的方法不起作用了。当浏览器看到音频 mimetype 时,它会尝试使用音频控件播放它。该音频控件有一个 src
属性指向我发送的音频。随后从音频控件回调到我的服务器正确地失败了,因为我没有保留该音频并提供它的路径。
我有一个简单的 Python Flask 应用程序,用于 return 我生成服务器端(单独)的图像和音频。我的图像代码如下所示:
# various cv2 calls to generate an image
image_bytes = cv2.imencode('.png', image)
return Response(image_bytes[1].tobytes(), mimetype='image/png', status=200)
效果很好。但是,我似乎收不到 return 音频。这是代码:
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 的长度。我想我缺少一个 encoding/translation 步骤。
事实证明,我在将音频写入文件并返回该文件的正确路径上。在我的第一条评论中,我声明将音频写入文件并使用 send_from_directory
失败。嗯,它是,但由于一个单独的错误。一旦我解决了这个问题,它就起作用了。
return send_from_directory('static/audio', file_name)
我想我明白为什么我原来的方法不起作用了。当浏览器看到音频 mimetype 时,它会尝试使用音频控件播放它。该音频控件有一个 src
属性指向我发送的音频。随后从音频控件回调到我的服务器正确地失败了,因为我没有保留该音频并提供它的路径。