#!/usr/bin/env python3
"""
对比两个音频文件的差异
"""
import subprocess
import json

# 原始音频文件
original_file = "\\\\ll\\d\\wxvddata\\我们人类到底是怎么一步步走到今天这个样子的_枪炮_病菌与钢铁__高晓松__矮大紧__文学.mp3"

# 桌面上的音频文件
desktop_file = r"C:\Users\ad\Desktop\bandicam 2026-03-24 07-47-23-429.mp3"

def get_audio_info(file_path):
    """获取音频文件信息"""
    cmd = ["ffprobe", "-v", "quiet", "-print_format", "json", "-show_format", "-show_streams", file_path]
    result = subprocess.run(cmd, capture_output=True, text=True)
    return json.loads(result.stdout)

print("=" * 80)
print("音频文件对比分析")
print("=" * 80)

# 获取两个文件的信息
original_info = get_audio_info(original_file)
desktop_info = get_audio_info(desktop_file)

print(f"\n【原始音频文件】")
print(f"  文件: {original_file.split('\\')[-1]}")
print(f"  时长: {float(original_info['format']['duration']):.3f}秒 ({float(original_info['format']['duration'])/60:.2f}分钟)")
print(f"  比特率: {original_info['format']['bit_rate']} bps")
print(f"  采样率: {original_info['streams'][0]['sample_rate']} Hz")
print(f"  声道: {original_info['streams'][0]['channels']}")
print(f"  start_time: {original_info['streams'][0].get('start_time', 'N/A')}")

print(f"\n【桌面音频文件】")
print(f"  文件: {desktop_file.split('\\')[-1]}")
print(f"  时长: {float(desktop_info['format']['duration']):.3f}秒 ({float(desktop_info['format']['duration'])/60:.2f}分钟)")
print(f"  比特率: {desktop_info['format']['bit_rate']} bps")
print(f"  采样率: {desktop_info['streams'][0]['sample_rate']} Hz")
print(f"  声道: {desktop_info['streams'][0]['channels']}")
print(f"  start_time: {desktop_info['streams'][0].get('start_time', 'N/A')}")

print(f"\n【差异分析】")
duration_diff = float(desktop_info['format']['duration']) - float(original_info['format']['duration'])
bitrate_diff = int(desktop_info['format']['bit_rate']) - int(original_info['format']['bit_rate'])

print(f"  时长差异: {duration_diff:.3f}秒 (桌面文件更长)")
print(f"  比特率差异: {bitrate_diff} bps (桌面文件比特率更高)")
print(f"  start_time差异: 原始文件有初始偏移(0.023021秒)，桌面文件无偏移")

print(f"\n【可能的原因】")
print(f"  1. 桌面文件是bandicam录制，可能包含了额外的静音或开头部分")
print(f"  2. 桌面文件比特率更高(192k vs 128k)，音质可能更好")
print(f"  3. 原始文件有初始偏移，桌面文件从0开始")
print(f"  4. 桌面文件长约{duration_diff:.1f}秒，可能是录制时包含了额外的内容")

print("=" * 80)
