一、二进制数据转AudioSegment对象
python
binary_data = b'...' # 二进制音频数据
combined_audio = AudioSegment.from_file(io.BytesIO(binary_data))
二、AudioSegment对象转二进制数据
python
binary_data = b'...' # 二进制音频数据
combined_audio = AudioSegment.from_file(io.BytesIO(binary_data))
# 直接获取二进制字节数据时,会缺失44个头部说明字节,我们需要补全
# 获取二进制字节数据
raw_audio = combined_audio.raw_data
# 组装头部字节
header = struct.pack('<4sI4s', b'RIFF', len(raw_audio) + 36, b'WAVE')
header += struct.pack('<4sIHHIIHH', b'fmt ', 16, 1, combined_audio.channels, combined_audio.frame_rate,
combined_audio.frame_rate * combined_audio.channels * combined_audio.sample_width,
combined_audio.channels * combined_audio.sample_width, combined_audio.sample_width * 8)
header += struct.pack('<4sI', b'data', len(raw_audio))
# 添加上头部字节
binary_data_comeback = header + raw_audio
# 此时binary_data_comeback 跟 binary_data是完全相同的。