#!/usr/bin/env python3
"""
拼接"牛津大学AI"前10句视频
"""
import os
import subprocess

video_dir = "oxford_videos_10"
output_file = "oxford_10.mp4"

video_files = sorted([f for f in os.listdir(video_dir) if f.endswith('.mp4')])
print(f"找到 {len(video_files)} 个视频片段")

concat_file = "concat_list_oxford_10.txt"
with open(concat_file, 'w', encoding='utf-8') as f:
    for video_file in video_files:
        video_path = os.path.join(video_dir, video_file)
        f.write(f"file '{video_path}'\n")

print(f"\n开始拼接视频...")

concat_cmd = [
    "ffmpeg", "-y",
    "-f", "concat",
    "-safe", "0",
    "-i", concat_file,
    "-c", "copy",
    output_file
]

result = subprocess.run(concat_cmd, capture_output=True, text=True, encoding='utf-8', errors='ignore')

if result.returncode == 0:
    output_size = os.path.getsize(output_file)
    print(f"\n完成！")
    print(f"  输出文件: {output_file}")
    print(f"  文件大小: {output_size / 1024 / 1024:.2f} MB")
    
    probe_cmd = ["ffprobe", "-v", "error", "-show_entries", "format=duration", "-of", "default=noprint_wrappers=1:nokey=1", output_file]
    probe_result = subprocess.run(probe_cmd, capture_output=True, text=True)
    duration = float(probe_result.stdout.strip())
    print(f"  视频时长: {duration:.1f}秒 ({duration/60:.2f}分钟)")
else:
    print(f"拼接失败: {result.stderr[:500]}")

os.remove(concat_file)
