在FFmpeg中混合两个wav文件

时间:2016-02-10 15:02:56

标签: ffmpeg

  

我有2个wav文件wav1和wav2.我想每45秒播放一次wav2   使用FFmpeg在wav1上。

2 个答案:

答案 0 :(得分:2)

好的,首先创建一个45秒的文件来循环wav2

number = number.replaceAll("\\D+", ""); //Remove non numeric values

现在,混合

ffmpeg -i wav2 -af apad -t 45 wav2-padded.wav

答案 1 :(得分:0)

我认为这应该实现你想要的目标

#!/bin/bash

interval_millis=45000

regex="Duration: ([0-9:.]+)"
[[ $(ffmpeg -i $1 2>&1) =~ $regex ]]

duration_millis=$(echo "${BASH_REMATCH[1]}" | \
    awk -F: '{ print 1000 * (($1 * 3600) + ($2 * 60) + $3) }')

duration_counter=$interval_millis
i=1

while [[ $duration_counter -lt $duration_millis ]]; do
    inputs+=" -i $2"
    delay_params+="[$i]adelay=$duration_counter[del$i];"
    amix_params+="[del$i]"

    ((i++))
    ((duration_counter += $interval_millis))
done

ffmpeg -i $1 $inputs -filter_complex \
    "$delay_params[0]${amix_params}amix=inputs=$i:duration=first" out.wav

我在2015年版的ffmpeg上遇到adelay的问题,所以请确保你有最新的版本来运行它。您将脚本称为

./script.sh long-file short-file