#!/bin/bash # 简化版连续演示 - 直接使用 ASRX 数据播放 set -e VIDEO=/tmp/charade_audio.wav ASRX=/tmp/asrx_charade_optimized.json # 检查数据 if [ ! -f "$VIDEO" ] || [ ! -f "$ASRX" ]; then echo "⚠️ 测试数据不存在,正在生成..." cd scripts/asrx_self python3 test_long_movie.py cd ../.. fi echo "🎬 连续演示模式" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "📺 从头到尾播放所有 ASRX 片段" echo "⏸️ 按 Ctrl+C 停止" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo # 检查是否显示视频 SHOW_VIDEO="" if [ "$1" = "--video" ]; then SHOW_VIDEO="1" echo "📺 视频模式:将显示视频窗口" echo fi # 统计信息 TOTAL=$(jq '.segments | length' "$ASRX") echo "📊 总片段数: $TOTAL" echo # 播放计数 COUNT=0 # 使用 jq 提取 ASRX 片段并播放 jq -r '.segments[] | "\(.start)|\(.end)|\(.speaker)|\(.duration)"' "$ASRX" | while IFS='|' read -r start end speaker duration; do COUNT=$((COUNT + 1)) # 显示进度 echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "[$COUNT/$TOTAL] 🎤 $speaker" echo "⏱ ${start}s - ${end}s (${duration}s)" # 播放片段 if [ -n "$SHOW_VIDEO" ]; then ffplay -ss "$start" -t "$duration" -autoexit -x 800 -y 600 "$VIDEO" 2>/dev/null else echo "🔊 播放中..." ffplay -ss "$start" -t "$duration" -autoexit -nodisp "$VIDEO" 2>/dev/null fi # 短暂停顿 sleep 0.05 done echo echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "✅ 演示完成!共播放 $TOTAL 个片段" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"