下面的命令混合input2使用以陳述句變數為特征的input1二進制*if運算式。因此,= ,但在 at :betweentoutputinput1input200:00:03- 00:00:05
ffmpeg -y -i input1.mkv -i input2.mkv -filter_complex "[1:v][0:v]scale2ref[v1][v0];[v0][v1]blend=all_expr='A*if(between(T, 3, 5), 0, 1) B*if(between(T, 3, 5), 1, 0)'" -vcodec libx264 -pix_fmt yuv444p -crf 18 -acodec copy output.mkv
我的問題是在一組評估條件的情況下如何將這些鏈接在一起。我嘗試了 下面的運算子,但input1不再相同。它似乎被視頻的多層扭曲。
ffmpeg -y -i input1.mkv -i input2.mkv -filter_complex "[1:v][0:v]scale2ref[v1][v0];[v0][v1]blend=all_expr='A*if(between(T, 3, 5), 0, 1) B*if(between(T, 3, 5), 1, 0)' 'A*if(between(T, 7, 9), 0, 1) B*if(between(T, 7, 9), 1, 0)'" -vcodec libx264 -pix_fmt yuv444p -crf 18 -acodec copy output.mkv
如何在不產生視覺偽影的情況下將這些鏈接在一起?
這個問題是Rotem 對我之前的問題的解決方案的后續。
uj5u.com熱心網友回復:
如果您只想要[v1]在 [3, 5] 和 [7, 9] 之間,[v0]否則,請確保B乘以1{[3, 5], [7, 9]} 并A乘以0{[3 , 5], [7, 9]},反之亦然。
我們可以使用以下命令:
ffmpeg -y -i input1.mkv -i input2.mkv -filter_complex "[1:v][0:v]scale2ref[v1][v0];[v0][v1]blend=all_expr='A*not((between(T, 3, 5) between(T, 7, 9))) B*(between(T, 3, 5) between(T, 7, 9))'" -vcodec libx264 -pix_fmt yuv444p -crf 18 -acodec copy output.mkv
因為它只是0and 1,所以我們不必使用if運算式。
根據運算式評估檔案:
between(x, min, max)
如果 x 大于或等于 min 且小于或等于 max,則回傳 1,否則回傳 0。
not(expr)
如果 expr 為零,則回傳 1.0,否則回傳 0.0。
(between(T, 3, 5) between(T, 7, 9))1在范圍 {[3, 5], [7, 9]} 內被評估,0否則被評估。not(between(T, 3, 5) between(T, 7, 9))0在范圍 {[3, 5], [7, 9]} 內被評估,1否則被評估。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/427560.html
下一篇:我對if陳述句和數字有疑問
