目录
一、安装ffmpeg和pydub
这里只介绍了conda虚拟环境安装方法,windows和Linux可以轻松从网上查找。
1、进入你的虚拟环境,"yourname"改成你环境的名字
conda activate yourname
2、conda安装ffmpeg
conda install -c conda-forge ffmpeg
3、pip安装python运行的ffmpeg
pip install ffmpeg-python
4、pip安装pydub
pip install pydub
二、MP4文件转换M4A
import os
import ffmpeg
def convert_mp4_to_m4a(folder_path):
# 获取文件夹中的所有文件
files = os.listdir(folder_path)
# 过滤出所有的MP4文件
mp4_files = [f for f in files if f.endswith('.mp4')]
for mp4_file in mp4_files:
mp4_path = os.path.join(folder_path, mp4_file)
m4a_path = os.path.join(folder_path, os.path.splitext(mp4_file)[0] + '.m4a')
try:
# 使用ffmpeg进行转换
ffmpeg.input(mp4_path).output(m4a_path, acodec='copy').run()
print(f"Converted {mp4_file} to {os.path.splitext(mp4_file)[0]}.m4a")
except ffmpeg.Error as e:
print(f"Error converting {mp4_file}: {e}")
# 设置你的文件夹路径
folder_path = "E:/video"
convert_mp4_to_m4a(folder_path)
只需要将 folder_path 更改成你mp4文件所在文件夹的名字即可,即使文件夹中包含其他非mp4格式的文件也OK。生成的文件也在 folder_path 文件夹下。
三、M4A文件转PCM
from pydub import AudioSegment
import os
def M4A_to_PCM(root_path):
files = os.listdir(root_path)
# 过滤出所有的MP4文件
m4a_files = [f for f in files if f.endswith('.m4a')]
for m4a_file in m4a_files:
m4a_file = os.path.join(root_path, m4a_file)
pcm_path = os.path.join(root_path, os.path.splitext(m4a_file)[0] + '.pcm')
print(m4a_file)
print(pcm_path)
# 读取M4A文件
audio = AudioSegment.from_file(m4a_file, format="m4a")
# 将音频导出为PCM格式
audio.export(pcm_path, format="s16le")
folder_path = "E:/video"
M4A_to_PCM(folder_path)
只需要将 folder_path 更改成你M4A文件所在文件夹的名字即可。生成的PCM文件也在 folder_path 文件夹下。
四、绘制时域图
def plot_signal(t, signal):
plt.figure(figsize=(10, 4))
plt.plot(t, signal)
plt.xlabel("Time (s)")
plt.ylabel("Amplitude")
plt.grid()
plt.show()
if __name__ == '__main__':
file_path = '' # 你的pcm文件路径
sample_rate = 16000 # 采样率
audio_data = read_pcm(file_path)
duration = len(audio_data) / sample_rate
t = np.linspace(0, duration, len(audio_data), endpoint=False)
plot_signal(t, audio_data, "Original Time Domain Signal")