xiandie/compress_audio_parallel.sh

31 lines
1.1 KiB
Bash
Raw Normal View History

#!/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 "✅ 全部任务完成"