ffmpeg 在音频文件中添加随机的背景音,同时保持原音频的长度,编码格式不变 。
要使用 ffmpeg
在音频文件中添加随机的背景音,同时保持原音频的长度和编码格式不变,你可以按照以下步骤操作:
准备背景音频文件:确保你有一个或多个背景音频文件,可以随机选择其中一个。
使用 ffmpeg
命令:你可以编写一个脚本来随机选择背景音频文件,并使用 ffmpeg
将其与原音频文件混合。
以下是一个示例脚本,假设你有一个名为 input.mp3
的原音频文件和一个包含背景音频文件的目录 backgrounds/
:
#!/bin/bash
# 原音频文件
input_audio="input.mp3"
# 背景音频文件目录
background_dir="backgrounds/"
# 随机选择一个背景音频文件
background_audio=$(ls $background_dir | shuf -n 1)
# 获取原音频文件的长度
duration=$(ffmpeg -i $input_audio 2>&1 | grep "Duration" | cut -d ' ' -f 4 | sed s/,//)
# 混合音频文件
ffmpeg -i $input_audio -i "$background_dir/$background_audio" -filter_complex "[1]adelay=delays=0:all=1,apad[A];[0][A]amix=inputs=2:duration=first:dropout_transition=3" -t $duration -c:a copy output.mp3
随机选择背景音频文件:
ls $background_dir | shuf -n 1
:列出背景音频文件目录中的所有文件,并随机选择一个。获取原音频文件的长度:
ffmpeg -i $input_audio 2>&1 | grep "Duration" | cut -d ' ' -f 4 | sed s/,//
:使用 ffmpeg
获取原音频文件的时长。混合音频文件:
ffmpeg -i $input_audio -i "$background_dir/$background_audio" -filter_complex "[1]adelay=delays=0:all=1,apad[A];[0][A]amix=inputs=2:duration=first:dropout_transition=3" -t $duration -c:a copy output.mp3
:
adelay=delays=0:all=1
:确保背景音频从头开始播放。apad
:填充背景音频以确保其长��与原音频一致。amix=inputs=2:duration=first:dropout_transition=3
:将两个音频混合,使用原音频的长度。-t $duration
:设置输出音频的长度与原音频一致。-c:a copy
:保持原音频的编码格式不变。运行这个脚本将生成一个名为 output.mp3
的文件,其中包含了原音频和