Python 如何将二进制数据恢复到音频文件中?
我使用Python 如何将二进制数据恢复到音频文件中?,python,audio,pydub,Python,Audio,Pydub,我使用pydub加载音频文件,如下所示: audio = AudioSegment.from_mp3(file_path).set_frame_rate(22050).set_channel(1) 但是如果我得到音频文件的二进制数据,我使用以下方法 def get_file_content(filePath): with open(filePath, 'rb') as fp: return fp.read() audio = AudioSegment(data=get_
pydub
加载音频文件,如下所示:
audio = AudioSegment.from_mp3(file_path).set_frame_rate(22050).set_channel(1)
但是如果我得到音频文件的二进制数据,我使用以下方法
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
audio = AudioSegment(data=get_file_content(file_path), sample_width=2, frame_rate=22050, channels=1)
但是,当我尝试使用属性audio.get\u array\u of_samples()
时,我从这两种方法获得了不同的数组
所以我想问一下,在读取相同的音频时,如何使这两种方式输出相同的数组。第一个代码段表明这是一个MP3文件。在第二种情况下,您将其读取为16位WAV文件。那会产生垃圾 如果MP3文件为字节数组,则使用以下代码:
AudioSegment.from_mp3(BytesIO(mp3_data))
使用
BytesIO
从这里开始:第一个代码段表明这是一个MP3文件。在第二种情况下,您将其读取为16位WAV文件。那会产生垃圾
如果MP3文件为字节数组,则使用以下代码:
AudioSegment.from_mp3(BytesIO(mp3_data))
使用
BytesIO
从这里开始:@Jiaaro无法将MP3作为二进制数组传递到AudioSegment?您可以执行:AudioSegment.from_MP3(BytesIO(MP3_数据))
但pydub无论如何都会将数据写入临时文件,然后将临时文件传递给ffmpeg–您也可以将打开的文件或任何类似文件的对象传递给AudioSegment.from_mp3()
@Jiaaro我猜这就是问题所在:如何从字节数组加载数据。@Jiaaro没有办法将MP3作为二进制数组传递到AudioSegment?您可以这样做:AudioSegment.from_MP3(BytesIO(MP3_data))
但pydub无论如何都会将数据写入临时文件,然后将临时文件传递给ffmpeg–您也可以将打开的文件或任何类似文件的对象传递给AudioSegment。从\u mp3()
@Jiaaro我猜这就是问题所在:如何从字节数组加载数据。