2017-02-19 20 views
1

我使用ffmpeg創建循環視頻,其中循環完全平滑,與在所有幀之間移動相同。 我有27個圖像,其中一個在另一箇中轉換,因此幀0 =幀27 我在圖像之間使用-vf minterpolate = fps = 30,所以過渡非常平滑。我有--framerate 10,所以理論上插值濾鏡創建3個額外的幀。因此,我除去27'th幀和創建視頻ffmpeg插入一個循環以保持光滑

的ffmpeg -framerate 10 -start_number 0 -i ./motion/%d.png -vf 「minterpolate = FPS = 30」

但是,當它循環, 0和最後一幀之間沒有轉換,並且不平滑。如何創建循環之間的平滑過渡?我試圖離開第27幀,當粘貼視頻時,刪除最後一幀,這是重複。但不知道如何減少只有一幀,到時候它失敗了。

請幫我用minterpolate過濾器得到平滑的循環。

回答

1

如果我正確理解你的話,當它循環時,從最後一幀到第一幀沒有插值。快速解決方案是複製第一幀並將其重命名爲最後一幀。所以如果1.png是第一個圖像而27.png是最後一個,那麼將1.png複製爲28.png。現在,運行你當前的命令。在循環關節處,您將有一個1/28.png重複的額外幀。這會使視頻持續時間增加0.033秒。如果你需要刪除它,請在minterpolate後應用trim=end_frame=83

+0

感謝您的信息。我嘗試過,但沒有幫助。爲了測試循環,我使用ffmpeg的concat來多次加倍同一個文件。當循環開始時,有間隙或快速移動到下一幀,沒有任何效果/插值。糟糕的是,minterpolate無法緩存結果,這就是爲什麼我現在正在拆分這些進程。我只需要在這28幀之間進行插值並重復多次。它非常緩慢,並且只使用1個線程/ 1個內核。並只使用cpu :(我不知道任何其他插值方法,我試過butterflow,但它從來沒有工作 – Ural

+0

你可以分享的圖像? – Mulvya

+0

請在這裏得到它:https://www.sendspace.com/file/0ddjrt感謝您的幫助。0.png = 27.png – Ural

0

我解壓縮後,將視頻內插回幀中,並且看到第一幀之間的開始處有錯誤。也許minterpolate略過了一些東西,但是我使用trim = start_frame = 81:end_frame = 162來解決它,所以我生成了兩次以上的圖像並在第一次循環後將其剪下。我知道,這是開銷,並試圖增加3-4個額外的幀,但只有這種組合運作良好。

@Mulvya,謝謝你的回答,你幫了我很多