mp4文件转wav文件py脚本:

安装依赖库:pip install ffmpeg

import os
from pydub import AudioSegment
import argparse


def convert_mp4_to_wav(input_file, output_file=None):
    """
    将MP4文件转换为WAV格式

    Args:
        input_file (str): 输入的MP4文件路径
        output_file (str, optional): 输出的WAV文件路径

    Returns:
        bool: 转换是否成功
    """
    try:
        # 检查输入文件是否存在
        if not os.path.exists(input_file):
            print(f"错误:输入文件 '{input_file}' 不存在")
            return False

        # 如果未指定输出文件,则自动生成
        if output_file is None:
            base_name = os.path.splitext(input_file)[0]
            output_file = f"{base_name}.wav"

        print(f"正在转换: {input_file} -> {output_file}")

        # 读取MP4文件并提取音频
        audio = AudioSegment.from_file(input_file, format="mp4")

        # 导出为WAV格式
        audio.export(output_file, format="wav", codec="pcm_s16le")

        print(f"转换成功!输出文件: {output_file}")
        print(f"音频信息: 时长 {len(audio) // 1000}秒, 采样率 {audio.frame_rate}Hz")

        return True

    except Exception as e:
        print(f"转换失败: {str(e)}")
        return False


def batch_convert_mp4_to_wav(input_folder, output_folder=None):
    """
    批量转换文件夹中的所有MP4文件为WAV格式
    """
    if output_folder is None:
        output_folder = input_folder

    # 确保输出文件夹存在
    os.makedirs(output_folder, exist_ok=True)

    # 查找所有MP4文件
    mp4_files = [f for f in os.listdir(input_folder) if f.lower().endswith('.mp4')]

    if not mp4_files:
        print(f"在文件夹 '{input_folder}' 中未找到MP4文件")
        return

    print(f"找到 {len(mp4_files)} 个MP4文件,开始批量转换...")

    success_count = 0
    for mp4_file in mp4_files:
        input_path = os.path.join(input_folder, mp4_file)
        output_filename = os.path.splitext(mp4_file)[0] + ".wav"
        output_path = os.path.join(output_folder, output_filename)

        if convert_mp4_to_wav(input_path, output_path):
            success_count += 1

    print(f"批量转换完成!成功转换 {success_count}/{len(mp4_files)} 个文件")


def main():
    """主函数"""
    parser = argparse.ArgumentParser(description='MP4转WAV音频转换器')
    parser.add_argument('input', help='输入的MP4文件路径或文件夹路径')
    parser.add_argument('-o', '--output', help='输出的WAV文件路径或文件夹路径')
    parser.add_argument('-b', '--batch', action='store_true', help='批量转换模式')

    args = parser.parse_args()

    if args.batch:
        # 批量转换模式
        batch_convert_mp4_to_wav(args.input, args.output)
    else:
        # 单个文件转换模式
        convert_mp4_to_wav(args.input, args.output)


if __name__ == "__main__":
    main()

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐