0

我尝试使用(一个)ffmpeg 命令制作一个 bash 文件,其中单个 mp3 文件(假设持续时间为两分钟)将延长到例如 8 小时的持续时间。由于 mp3 文件的前后总是有这些静音间隙,为了使其无缝循环,我需要使用交叉淡入淡出。如果没有一个巨大的命令,我怎么能做到这一点:

ffmpeg -i same.mp3 -i same.mp3 -i same.mp3 ....(数百次) -filter_complex "[0][1]acrossfade=d=5:c1=exp:c2=exp[a01] ...等(数百次)输出.mp3

4

1 回答 1

1

未经过 8 小时测试:

#!/bin/bash
TOT=160
f="input 3.mp3"
INP=("-i" "$f")

FLC="[0:a]asplit=${TOT}"
for (( i=1; i<=$TOT; i++ )); do
  FLC+="[${i}a]"
done

PDC="[1a]"
for (( i=2; i<=$TOT; i++ )); do
  PDA="[${i}a]"
  FLC+=";${PDC}${PDA}acrossfade=d=5"
  PDC="[${i}xa]"
  FLC+="${PDC}"
done

echo $FLC
echo ""
ffmpeg "${INP[@]}" -filter_complex "$FLC" -map $PDC -c:a libmp3lame -b:a 320k /tmp/output.mp3 -y
mpv /tmp/output.mp3

变量 TOT = 8 小时 div 输入持续时间

于 2021-04-16T15:27:19.413 回答