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

相关推荐
mit6.8243 小时前
[sam2图像分割] 视频追踪API | VideoPredictor | `inference_state`记忆
人工智能·计算机视觉·音视频
碧海银沙音频科技研究院5 小时前
DiVE长尾识别的虚拟实例蒸馏方法
arm开发·人工智能·深度学习·算法·音视频
AI浩5 小时前
基于多焦点高斯邻域注意力机制与大规模基准的视频人群定位
人工智能·深度学习·音视频
开发者导航5 小时前
【开发者导航】全自动 AI 视频创作与发布工具:LuoGen-agent
人工智能·音视频
xingxing_F7 小时前
Topaz Video AI for Mac AI视频无损放大 视频画质增强
人工智能·macos·音视频
mortimer7 小时前
用PySide6 构建一个响应式视频剪辑工具:多线程与信号机制实战
python·ffmpeg·pyqt
Android系统攻城狮9 小时前
Android16音频之设置音频模式setMode:用法实例(七十一)
音视频·android16·设置音频模式·setmode
aqi0011 小时前
FFmpeg开发笔记(八十六)基于Node.js的国产视频编辑开源框架OpenCut
ffmpeg·音视频·直播·流媒体
黑翼杰克斯1 天前
关于buildroot文件系统中rootfs的内容,该怎么增删(瑞芯微rv1126b)
linux·音视频·1024程序员节
叶羽西1 天前
FFmpeg介绍、使用说明
ffmpeg