應用慢動作後找影片時長

應用慢動作後找影片時長

我正在嘗試將慢動作效果應用於一系列影片。此外,這些影片將被縮放、填充和交叉淡入淡出。以下是我用來套用慢動作的指令。

ffmpeg -i 1.mp4 -filter_complex "
[0:v]trim=0:5,setpts=PTS-STARTPTS[tv1];
[0:v]trim=5:7,setpts=PTS-STARTPTS[tv2];
[0:v]trim=start=7,setpts=PTS-STARTPTS[tv3];
[tv2]setpts=PTS*2[slow];
[tv1][slow][tv3]concat=n=3:v=1:a=0[out]" -map [out] -c:v libx264 test.mp4

我有兩個問題。

  1. 參考[tv2]雖然它被修剪並應用從第5秒開始的慢動作效果,但實際上它從第4秒開始應用效果。這是什麼原因呢?

以下是我在上述命令中連接後立即用於其他處理的命令。

[concat0]scale=iw*min(1280/iw\,720/ih):ih*min(1280/iw\,720/ih),pad=1280:720:(1280-iw*min(1280/iw\,720/ih))/2:(720-ih*min(1280/iw\,720/ih))/2,format=pix_fmts=yuva420p,fade=t=out:st=16:d=2:alpha=1,setpts=expr=PTS-STARTPTS+10/TB[va0];

在那裡我需要指定setpts並且我正在使用當前視訊之前的視訊的累積持續時間。這裡是我使用的完整命令。

  1. 如何計算套用慢動作效果後影片的時長?例如,我在這裡提到的第一個命令的視訊結果的持續時間增量是多少(以秒甚至微秒為單位)?

答案1

問題1- 該命令不完整,因為您沒有考慮聲音的軌道,您僅在影片追踪。要查看差異,只需嘗試以下操作:

# no-good, starts from 4th second audio with a frozen video frame
ffmpeg -i in.mp4 -vf trim=5:7 out.mp4
#
# works as expected, both audio and video start at 5th second
ffmpeg -i in.mp4 -vf trim=5:7 -af atrim=5:7 out.mp4

問題2- 由於相同的原因,這也不會按預期工作,但是一旦解決了上一個問題,這裡有一個不太優雅但有效的技巧來關聯“之前”和“之後”時間:

# overlay the input video with a timer, pulled to the right 200 pixels
ffmpeg -i in.mp4 -f lavfi -i testsrc=n=3 -vf overlay=x=200 in-with-time.mp4
#
# do all your manipulation, and finaly overlay with another timer at x=0
ffmpeg -i in-with-time.mp4 -f lavfi -i testsrc=n=3 -filter_complex "..stuff...,overlay[out]" out.mp4

這為您提供每幀的原始時間和結果時間,精度為 1 毫秒。

相關內容