簡體   English   中英

FFmpeg 在給定時間將音頻剪輯混合到一個主音頻文件中

[英]FFmpeg mix audio clips at given time into a main audio file

我一直在為有聲讀物錄制小音頻剪輯。 我有每個以秒為單位的開始時間。 音樂長度是 60 分鍾。 我正在考慮創建一個與音樂持續時間相同的靜音音頻文件,但是如何將每個剪輯添加到給定的開始時間? 無論剪輯是否重疊。 我嘗試在沒有空白文件的情況下使用 concat 和 inpoint 並且 output 是空的(我使用的是 wav 文件),這就是為什么使用主空白文件作為基礎的想法。

如果可能的話,我真的很感激任何例子。

謝謝

我希望能理解你的問題。 創建靜音 wav 文件:

ffmpeg -f lavfi -i anullsrc -t 01:00:00 silence.wav

將 01:00:00(一小時)替換為您需要的持續時間。 然后,連接並混合音頻文件。 在這個例子中,我使用了兩個小的音頻片段:

ffmpeg -i silence.wav -i clip1.wav -i clip2.wav -filter_complex "aevalsrc=0:d=10[s1];aevalsrc=0:d=20[s2];[s1][1:a]concat=n=2:v=0:a=1[ac1];[s2][2:a]concat=n=2:v=0:a=1[ac2];[0:a][ac1][ac2]amix=3[aout]" -map [aout] out.wav

混合大量剪輯是一個非常長的命令。 所以,試試下面的 bash 腳本。 指示:

  1. 將下面的代碼復制到一個名為mixing.sh 的空sh 文件中

  2. 將“位置”替換為以秒為單位的瞬間以觸發每個剪輯(我的開始時間剪輯是 10、22 和 35 秒)。

  3. 確保所有剪輯都放在一個名為“剪輯”的文件夾中(在 .sh 文件旁邊)。 記得給文件編號(1.wav,2.wav...)

  4. 打開終端並輸入:bash mix.sh

  5. 文件 out.wav 必須在所需位置包含音頻剪輯。

腳本在這里,祝你好運!

#!/bin/bash

positions=(10 22 35)
seconds_at_the_end=2

clips_folder="./clips/"
filetype=".mp3"
silence_file="silence"$filetype
output_file="out"$filetype

command="ffmpeg"
file_id=1

aevalsrc=""
concat=""
mix="[0:a]"

clips=($clips_folder*$filetype)

last_clip_length=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 ${clips[-1]} | awk '{printf("%d\n",$1 + 0.5)}')
silence_length=$((${positions[-1]}+last_clip_length+seconds_at_the_end))

eval $(ffmpeg -f lavfi -i anullsrc -t $silence_length $silence_file)

for filename in $clips_folder*$filetype;
do
  inputs=$inputs" -i "$filename
  aevalsrc=$aevalsrc"aevalsrc=0:d=${positions[$((file_id-1))]}[s"$file_id"];"
  concat=$concat"[s"$file_id"]["$file_id":a]concat=n=2:v=0:a=1[ac"$file_id"];"
  mix=$mix"[ac"$file_id"]"
  file_id=$((file_id+1))
done

mix=$mix"amix="$((${#positions[*]}+1))"[aout]"

eval $($command -i $silence_file $inputs -filter_complex "$aevalsrc$concat$mix" -map [aout] $output_file)

提示:我更喜歡自由格式,例如 ogg (vorbis) 或 flac,它是編輯或轉換更舒適的格式。 您可以執行更復雜的操作,並且可以免費使用。 更多信息: https://directory.fsf.org/wiki/Ogg_Vorbis

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM