31 lines
1.1 KiB
Bash
Executable File
31 lines
1.1 KiB
Bash
Executable File
#!/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 "✅ 全部任务完成" |