ffmpeg 将不足一秒的音频补全至一秒的方法步骤

ChatGPT4o 使用 ChatGPT 4o 回答

问题:

ffmpeg 将不足一秒的音频,用空白在后面补全至一秒?

回答:

要使用 ffmpeg 将不足一秒的音频文件用空白音频补全至一秒,可以按照以下步骤操作:

  1. 首先,获取原始音频的时长。
  2. 计算需要补充的空白音频的时长。
  3. 生成空白音频并将其与原始音频合并。

假设你的原始音频文件名为 input.wav,你可以使用以下命令来实现这个目标:

# 获取原始音频的时长
duration=$(ffmpeg -i input.wav 2>&1 | grep "Duration" | awk '{print $2}' | tr -d , | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }')

# 计算需要补充的空白音频的时长
padding=$(echo "1 - $duration" | bc)

# 生成空白音频
ffmpeg -f lavfi -t $padding -i anullsrc=r=44100:cl=stereo silence.wav

# 合并原始音频和空白音频
ffmpeg -i "concat:input.wav|silence.wav" -c copy output.wav

解释:

  1. 第一个命令使用 ffmpeg 获取原始音频的时长,并将其转换为秒数。
  2. 第二个命令计算需要补充的空白音频的时长。
  3. 第三个命令生成指定时长的空白音频文件 silence.wav
  4. 最后一个命令将原始音频和空白音频合并成一个新的音频文件 output.wav

请注意,这些命令假设你的音频采样率为 44100 Hz,立体声。如果你的音频