#!/usr/bin/env bash # ============================================================================== # DISPATCHER SCRIPT: compress_audio_parallel.sh (v4.1 - vorbis only) # ============================================================================== set -euo pipefail for cmd in ffmpeg ffprobe awk; do command -v "$cmd" &>/dev/null || { echo "缺少命令: $cmd"; exit 1; } done command -v parallel &>/dev/null || { echo "未安装 GNU parallel"; exit 1; } SOURCE_DIR="${SOURCE_DIR:-./asset/audio}" OUTPUT_DIR="${OUTPUT_DIR:-./compressed_audio}" BYTE_RATE_THRESHOLD="${BYTE_RATE_THRESHOLD:-60000}" OVERWRITE="${OVERWRITE:-0}" DRY_RUN="${DRY_RUN:-0}" CORES=$(getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1) echo "并行数: $CORES | Dry-Run=$DRY_RUN | 覆盖=$OVERWRITE" chmod +x compress_audio.sh find "$SOURCE_DIR" -type f \( -iname '*.wav' -o -iname '*.mp3' \) -print0 | parallel -0 -P "$CORES" --bar \ --env SOURCE_DIR --env OUTPUT_DIR --env BYTE_RATE_THRESHOLD \ --env OVERWRITE --env DRY_RUN --env AUDIO_RATE \ ./compress_audio.sh {} echo "✅ 全部任务完成"