+-

我将小尺寸的声音文件作为BSON存储在MongoDB中.
任务是从数据库中检索二进制数据,将其转换为适当的格式,然后发送回前端.
问题在于转换.我发现pydub可以用于此.
任务是从数据库中检索二进制数据,将其转换为适当的格式,然后发送回前端.
问题在于转换.我发现pydub可以用于此.
我的代码如下
query_param = json_data['retriever']
query_param1 = query_param.replace('"', "");
data = db.soundData
y = data.find_one({'name': query_param1})
s = y['data'] // here I retrieve the binary data
AudioSegment.from_file(s).export(x, format="mp3")
return send_file(x, 'audio/mp3')
问题在于Audiosegment行,因为它不符合
AudioSegment.from_wav(“ / input / file.wav”).export(“ / output / file.mp3”,格式=“ mp3”)
并且’bytes’对象的错误没有属性’read’仍然被抛出. pydub可以实现吗?
最佳答案
AudioSegment.from_file()以文件路径或类似文件的对象作为第一个参数.假设您具有整个wave文件的原始字节(包括wave标头,而不仅仅是音频数据),则可以:
import io
s = io.BytesIO(y['data'])
AudioSegment.from_file(s).export(x, format='mp3')
如果只有音频样本的字节,则需要了解有关音频数据的一些元数据:
AudioSegment(y['data'], sample_width=???, frame_rate=???, channels=???)
> sample_width是每个样本中的字节数(因此对于16位/ CD音频,您将使用2)
> frame_rate是每秒采样数(又称采样率,对于CD音频为44100)
>频道有多少个音频流,立体声为2,单声道为1,依此类推
点击查看更多相关文章
转载注明原文:python-从字节读取而不是文件名以转换音频 - 乐贴网