【问题标题】:How to restore the binary data into the audio file?如何将二进制数据恢复到音频文件中?
【发布时间】:2019-03-21 08:10:59
【问题描述】:

我使用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_array_of_samples() 时,我从这两种方式中得到了不同的数组。

所以我想问一下如何让这两种方式在读取相同的音频时输出相同的数组。

【问题讨论】:

    标签: python audio pydub


    【解决方案1】:

    第一个代码段表明这是一个 MP3 文件。在第二种情况下,您将其读取为 16 位 WAV 文件。这会产生垃圾。

    如果你有一个字节数组中的 MP3 文件,那么使用这个代码:

    AudioSegment.from_mp3(BytesIO(mp3_data))
    

    BytesIO 来自这里:https://docs.python.org/3/library/io.html

    【讨论】:

    • @Jiaaro 没有办法将 MP3 作为二进制数组传递给 AudioSegment?
    • 你可以这样做:AudioSegment.from_mp3(BytesIO(mp3_data)) 但无论如何 pydub 都会将数据写入临时文件,然后将临时文件传递给 ffmpeg——你也可以将打开的文件或任何类似文件的对象传递给 @ 987654325@
    • @Jiaaro 我猜这是问题:如何从字节数组中加载数据。
    猜你喜欢
    • 2014-02-21
    • 2020-05-14
    • 1970-01-01
    • 2016-04-20
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    相关资源
    最近更新 更多