2016-10-13 46 views
0

我有這個代碼計劃輸出一個包含vid1和vid2並排的視頻。所以我在vid1的右邊添加了一個填充,並嘗試使用overlay將vid2放置在該空間上,但是輸出視頻顯示了右側的vid1副本。有人可以告訴我我的代碼有什麼問題,以及如何解決它?由於node js ffmpeg complexfilter覆蓋另一個視頻

ffmpeg("vid1.mp4") 
.input("vid2.mp4") 
.complexFilter([ 
    "scale=300:300[rescaled]", 
    { 
     filter:"pad",options:{w:"600",h:"300"}, 
     inputs:"rescaled",outputs:"padded" 
    }, 
    { 
     filter:"overlay", options:{x:"300",y:"0"}, 
     inputs:["padded","vid2.mp4"],outputs:"output" 
    } 
], 'output') 
.output("output.mp4") 
.on("error",function(er){ 
    console.log("error occured: "+er.message); 
}) 
.on("end",function(){ 
    console.log("success"); 
}) 
.run(); 

回答

0

我用下面的代碼在以前的項目到做同樣的事情:

ffmpeg() 
.input("vid1.mp4") 
.input("vid2.mp4") 
.complexFilter([ 
    '[0:v]scale=300:300[0scaled]', 
    '[1:v]scale=300:300[1scaled]', 
    '[0scaled]pad=600:300[0padded]', 
    '[0padded][1scaled]overlay=shortest=1:x=300[output]' 
]) 
.outputOptions([ 
    '-map [output]' 
]) 
.output("output.mp4") 
.on("error",function(er){ 
    console.log("error occured: "+er.message); 
}) 
.on("end",function(){ 
    console.log("success"); 
}) 
.run(); 

注意,在這種情況下,從視頻中任何音頻被忽略和丟棄。如果您還想要音頻,則必須添加使用[0:a]和[1:a]通道作爲輸入的複雜混音濾波器。

outputOptions列表中的-map參數告訴ffmpeg項目將變量輸出映射到output.mp4文件。如果您需要音頻,則必須爲outputOptions以及音頻添加另一個-map參數。

+0

成功!謝謝! – Handsum