首页 > 解决方案 > 为什么立体声 mp3 文件在使用 ffmpeg 从 mp4 转换时会丢失一个通道?

问题描述

我正在关注本教程https://hackernoon.com/audio-handling-basics-how-to-process-audio-files-using-python-cli-jo283u3y,当我从 mp3 文件中提取数据时,它是只有一维数组,而 wav 文件中的数据是二维的。我使用 ffmpeg 从同一个 mp4 文件转换它们。

# read WAV file using scipy.io.wavfile
fs_wav, data_wav = wavfile.read("data/music_8k.wav")

# read MP3 file using pydub
audiofile = AudioSegment.from_file("data/music_8k.mp3")
data_mp3 = np.array(audiofile.get_array_of_samples())
fs_mp3 = audiofile.frame_rate

print(data_wav.shape) #(9835520, 2)
print(fs_wav) #44100
print(data_mp3.shape) #(19671040,)
print(fs_mp3) #44100

当我检查 mp3 文件的信息时,它说 Stereo,但是data_mp3只有一维数组的事实是否意味着它实际上是单声道的?转换过程中是否丢失了一个频道?如果我想确认这两个文件具有相同的信号,我应该如何重塑数据?

标签: audioffmpegmp3

解决方案


但是 data_mp3 只是一维数组的事实是否意味着它实际上是单声道的?

不。

如果我想确认这两个文件具有相同的信号,我应该如何重塑数据?

将其解码回wav


推荐阅读