You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用FFmpeg无重新编码按时间戳文件分割视频?是否需Python脚本?

按CSV指定时间分割MP4视频的两种方案

一、用Shell脚本配合FFmpeg批量处理

FFmpeg本身无法直接解析CSV文件完成自动批量分割,但可以通过Shell脚本读取CSV规则,循环调用FFmpeg实现批量切割,这是效率最高的方案:

  1. 确认input.mp4和split.csv文件在同一目录下
  2. 创建名为split_video.sh的脚本,内容如下:
#!/bin/bash
# 跳过CSV表头,逐行读取分割参数
tail -n +2 split.csv | while IFS=';' read -r start end name; do
    # 移除文件名两端的引号
    clean_name=$(echo "$name" | tr -d '"')
    # 调用FFmpeg执行分割
    ffmpeg -i input.mp4 -ss "$start" -to "$end" -c copy "$clean_name"
done
  1. 给脚本添加执行权限并运行:
chmod +x split_video.sh
./split_video.sh

FFmpeg参数说明

  • -ss "$start":设置片段起始时间,放在-i前会先定位到对应时间点再解码,处理速度更快
  • -to "$end":设置片段结束时间,与-ss配合截取指定时间区间
  • -c copy:直接复制音视频流,不重新编码,无质量损失且速度极快

二、用Python脚本实现

如果更熟悉Python生态,也可以编写脚本读取CSV规则,调用FFmpeg完成分割:

脚本示例

import csv
import subprocess

# 读取CSV中的分割规则
with open('split.csv', 'r', encoding='utf-8') as csv_file:
    # 按分号分隔,通过表头对应列名读取参数
    reader = csv.DictReader(csv_file, delimiter=';')
    for line in reader:
        start_time = line['start'].strip()
        end_time = line['end'].strip()
        output_filename = line['name'].strip().strip('"')
        
        # 构造FFmpeg命令
        ffmpeg_command = [
            'ffmpeg',
            '-i', 'input.mp4',
            '-ss', start_time,
            '-to', end_time,
            '-c', 'copy',
            output_filename,
            '-y'  # 自动覆盖已存在的同名文件,可根据需求移除
        ]
        
        # 执行命令并捕获结果
        try:
            subprocess.run(ffmpeg_command, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
            print(f"片段生成成功:{output_filename}")
        except subprocess.CalledProcessError as e:
            print(f"片段{output_filename}生成失败:{e.stderr.decode('utf-8')}")

注意事项

  • 确保FFmpeg已安装并添加到系统环境变量,能在终端直接调用
  • 如果遇到关键帧导致的切割不精确问题,可以移除-c copy,替换为重新编码参数(如-c:v libx264 -c:a aac),但会增加处理时间
  • 脚本中-y参数用于自动覆盖同名文件,不需要交互确认,不需要的话可以删除

内容的提问来源于stack exchange,提问作者Basj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 23:06:05