ffmpeg切割音频

ffmpeg切割音频

我希望对指定音频切割,按照开始时间,结束时间,切割成新文件,自动保存,非常好用

step1:

python 复制代码
from pydub import AudioSegment
import os

# 配置FFmpeg路径(确保路径正确)
ffmpeg_path = r"C:\ffmpeg\bin\ffmpeg.exe"
if os.path.exists(ffmpeg_path):
    AudioSegment.converter = ffmpeg_path
else:
    print("警告:未找到FFmpeg,将尝试使用系统路径中的FFmpeg")


def trim_audio_file(input_path, output_path, start_time=0, end_time=20):
    """
    剪切单个音频文件的指定时间段

    参数:
    input_path: 输入文件路径
    output_path: 输出文件路径
    start_time: 开始时间(秒),默认为0
    end_time: 结束时间(秒),默认为20
    """
    try:
        # 验证输入文件存在
        if not os.path.exists(input_path):
            raise FileNotFoundError(f"输入文件不存在: {input_path}")

        # 获取文件扩展名
        ext = os.path.splitext(input_path)[1].lower()
        supported_extensions = ['.mp3', '.wav', '.flac', '.ogg', '.m4a']
        if ext not in supported_extensions:
            raise ValueError(f"不支持的音频格式: {ext}")

        print(f"正在处理: {os.path.basename(input_path)}")

        # 加载音频文件
        audio = AudioSegment.from_file(input_path)
        original_duration = audio.duration_seconds
        print(f"原始文件时长: {original_duration:.2f}秒")

        # 转换为毫秒
        start_ms = start_time * 1000
        end_ms = end_time * 1000

        # 验证时间范围
        if start_ms < 0:
            start_ms = 0
            print(f"警告: 开始时间调整为0秒")

        if end_ms > len(audio):
            end_ms = len(audio)
            print(f"警告: 结束时间调整为文件末尾 ({end_ms / 1000:.2f}秒)")

        if start_ms >= end_ms:
            raise ValueError(f"无效的时间范围: {start_time}s-{end_time}s")

        # 剪切音频
        trimmed_audio = audio[start_ms:end_ms]

        # 确保输出目录存在
        os.makedirs(os.path.dirname(output_path), exist_ok=True)

        # 导出文件
        trimmed_audio.export(output_path, format=ext[1:])

        print(f"成功剪切: {start_time}s - {end_time}s")
        print(f"输出文件时长: {trimmed_audio.duration_seconds:.2f}秒")
        print(f"已保存至: {output_path}")

        return True

    except Exception as e:
        print(f"处理出错: {str(e)}")
        return False


if __name__ == "__main__":
    # 固定文件路径
    input_path = r"D:\Users\wangrusheng\Downloads\r.mp3"  # TXT文件路径
    output_path = r"D:\Users\wangrusheng\Downloads\rad.mp3"  # TXT文件路径
    # 固定时间范围 (0-20秒)
    start_time = 0
    end_time = 60

    print("音频文件剪切工具")
    print("=" * 40)
    print(f"输入文件: {input_path}")
    print(f"输出文件: {output_path}")
    print(f"剪切范围: {start_time}秒 - {end_time}秒")

    # 处理文件
    print("\n开始处理...")
    success = trim_audio_file(input_path, output_path, start_time, end_time)

    if success:
        print("\n处理完成!")
    else:
        print("\n处理失败,请检查错误信息")

end

相关推荐
微帧Visionular4 小时前
AI视频单帧清晰,播放时却闪烁,原因是什么?
人工智能·深度学习·音视频
辰辰观影6 小时前
Windows网盘视频播放器推荐:无广告4K HDR怎么选
音视频
2601_966827458 小时前
电视端云盘在线播放怎么选?支持4K HDR的应用推荐
音视频
开开心心就好9 小时前
音频降噪剪辑工具,音量裁剪一键处理
运维·服务器·前端·spring·ocr·音视频·1024程序员节
zslefour12 小时前
使用ffmpeg遍历获取音频文件相关信息
ffmpeg
AI视频工具指南12 小时前
AI视频的声音和画面怎么配合?先分清谁在传递信息
人工智能·aigc·音视频
辰辰观影15 小时前
无广告播放器推荐来啦
音视频
TrueDei15 小时前
GStreamer 使用 valve 分别控制音视频流的暂停与恢复
音视频
Android系统攻城狮15 小时前
Linux FFmpeg深度解析之avcodec_parameters_from_context调用流程与实战(十六)
linux·运维·ffmpeg·音视频进阶·ffmpeg音视频·车载音视频进阶
一条破秋裤16 小时前
基于 Hi3516CV610 的立定跳远视频测量系统调研与实施方案
arm开发·音视频