2017-02-21 212 views
0

我想,其中使用的ffmpeg -filter_complex機制創建的輸出的音頻這樣的輸出視頻,FFMPEG更換視頻音頻filter_complex

/usr/local/Cellar/ffmpeg/3.2.2/bin/ffmpeg 
-i /uploads/videos/1487684390-lg9htt0RW2.mov 
-i /uploads/audios/1487664761-SCPbo6Tkac.mp3 
-filter_complex " 
[0:a]atrim=0:8.70824980736,asetpts=PTS-STARTPTS[aud1]; 
[1:a]atrim=0:12.9567301273,asetpts=PTS-STARTPTS[aud2]; 
[0:a]volume=0.3,atrim=start=8.70824980736:21.6649799347,asetpts=PTS-STARTPTS[slow_aud]; 
[aud2][slow_aud] amerge=inputs=2[a_merged]; 
[0:a]atrim=start=21.6649799347:31.6410098076 [remaining_audio]; 
[aud1][a_merged][remaining_audio]concat=n=3:v=0:a=1[aout]" 
-map 0:v -map "[aout]" -c:v copy -acodec mp3 
/uploads/output/1487684390-lg9htt0RW2.mov 

原始基於UTC時間戳對原始視頻錄製基於UTC時間戳

音頻錄製
  13:00-------- Original Event Audio -------- 13:20 
     12:50------------- Event Video Recorded --------------13:30 

這是我的要求

所以輸出視頻的音頻應精讀含有雜質

  1. 開頭10秒(12:50 - 13:00)是事件的視頻的錄製音頻
  2. 下一個20秒(13:00 -13:20)合併音頻(原始音頻+原始視頻,其中原視頻的音量爲0.3)
  3. 剩下的10秒(13:21-13:30)視頻會播放視頻的remaing音頻

什麼我通過上面獲取命令

  1. 開頭10秒(12:50 - 13:00)是事件的視頻的錄製音頻取得
  2. 下一個20秒(13:00 -13:20)合併音頻(原始音頻+原始視頻,其中的原始視頻的音量爲0.3)取得
  3. 剩下的10秒(13:21-13:30)視頻會播放視頻沒有實現

回答

1

的剩餘音頻您還沒有復位的時間戳剩餘的音頻,如concat過濾器所要求的。所以,它應該是

[0:a]atrim=start=21.6649799347:31.6410098076,asetpts=PTS-STARTPTS[remaining_audio]; 

達到相同的結果,更短的方法是

-filter_complex 
"[1:a]adelay=12956.7301273|12956.7301273[mp3]; 
[0:a]volume=0.3:enable='between(t,8.70824980736,21.6649799347)'[vid]; 
[vid][mp3]amix[aout]" 
+0

謝謝@Mulvya,asetpts爲我工作。較短的路沒有奏效 – Chintan7027