python 将MP4文件转换M4A在转换成PCM文件格式;绘制时域图。

目录

一、安装ffmpeg和pydub

二、MP4文件转换M4A

三、M4A文件转PCM

四、绘制时域图


一、安装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")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值