Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将二进制数据恢复到音频文件中?_Python_Audio_Pydub - Fatal编程技术网

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我猜这就是问题所在:如何从字节数组加载数据。