#!/usr/bin/env python3
"""
根据字幕时间轴切出前4段视频
"""
import subprocess
import os

def cut_video_segment(input_path, output_path, start_time, end_time, ffmpeg_path="ffmpeg"):
    """剪切视频片段"""
    args = [
        ffmpeg_path,
        '-y',
        '-i', input_path,
        '-ss', str(start_time),
        '-to', str(end_time),
        '-c:v', 'libx264',
        '-c:a', 'aac',
        '-ar', '44100',
        '-ac', '1',
        '-pix_fmt', 'yuv420p',
        output_path
    ]
    
    try:
        subprocess.run(args, check=True, capture_output=True)
        return True
    except subprocess.CalledProcessError as e:
        print(f"错误: {e.stderr.decode('utf-8', errors='ignore') if e.stderr else '未知错误'}")
        return False

def time_to_seconds(time_str):
    """将时间字符串转换为秒数"""
    # 格式: 00:00:00,000
    parts = time_str.replace(',', '.').split(':')
    hours = int(parts[0])
    minutes = int(parts[1])
    seconds = float(parts[2])
    return hours * 3600 + minutes * 60 + seconds

def main():
    input_video = "input.mp4"
    
    # 前四句的时间轴（从字幕文件读取）
    segments = [
        {"name": "segment_01", "start": "00:00:00,000", "end": "00:00:01,129", "text": "The other day,"},
        {"name": "segment_02", "start": "00:00:01,129", "end": "00:00:04,519", "text": "I was chatting with Teacher Shi Guopeng..."},
        {"name": "segment_03", "start": "00:00:04,519", "end": "00:00:06,214", "text": "This matter has become less meaningful,"},
        {"name": "segment_04", "start": "00:00:06,214", "end": "00:00:08,474", "text": "It naturally led to a discussion..."},
    ]
    
    print("=" * 60)
    print("视频分段剪切工具")
    print("=" * 60)
    print(f"输入视频: {input_video}")
    print()
    
    for i, seg in enumerate(segments, 1):
        start_sec = time_to_seconds(seg["start"])
        end_sec = time_to_seconds(seg["end"])
        duration = end_sec - start_sec
        
        output_file = f"{seg['name']}.mp4"
        
        print(f"[{i}/4] 剪切: {seg['text'][:40]}...")
        print(f"      时间: {seg['start']} --> {seg['end']}")
        print(f"      时长: {duration:.3f}秒")
        print(f"      输出: {output_file}")
        
        success = cut_video_segment(input_video, output_file, start_sec, end_sec)
        
        if success:
            print(f"      [OK] 成功")
        else:
            print(f"      [FAIL] 失败")
        print()
    
    print("=" * 60)
    print("完成!")
    print("=" * 60)

if __name__ == '__main__':
    main()
