2012-05-24 74 views
2

我正在尋找在Linux上運行的命令行視頻工具,它可以編寫腳本,並且可以爲輸出視頻提供馬賽克視頻。問題是,馬賽克視頻必須在輸出內部進行更改。想象一下4 * 4的馬賽克視頻,但是輸入的視頻比16多,所以例如每10秒鐘我必須將馬賽克中的一個圖塊更改爲另一個視頻。馬賽克視頻輸出的命令行視頻工具

我發現命令行VLC工具和avisynth可以生成馬賽克輸出,但正如我所看到的,他們不支持上述變化的視頻。

有人知道其他選項嗎?

在此先感謝!

回答

0

AviSynth可以加入視頻,因此您可以隨時在腳本中更改視頻源。

例如,下面的示例中,四個輸入左上方視頻將6秒後改變爲不同視頻:

v11 = AviSource("SomeSampleVideo.avi", false). \ 
    Crop(0, 0, 320, 240).AssumeFPS(25).ConvertToRGB32.Trim(0, 150).FadeOut(25, $FF0000) 

v12 = AviSource("AnotherSampleVideo.avi", false). \ 
    Crop(40, 10, 320, 240).AssumeFPS(25).ConvertToRGB32.FadeIn(25, $FF0000) 

v1 = v11 + v12 

v2 = ImageReader("SomeSampleBitmap.bmp").Crop(20, 10, 320, 240).ConvertToRGB32 
v3 = AviSource("YetAnotherVideo.avi", false).Crop(30, 30, 320, 240).ConvertToRGB32 
v4 = v1.Subtract(v2) 

return StackVertical(StackHorizontal(v1, v2), StackHorizontal(v3, v4)) 


可能的是,我已雖然誤解要求..

+0

謝謝,工作! –

0

一個解決可能是在用VLC生成的UDP流運行您的視頻如:

vlc -vvv $YOUR_INPUT_VIDEO_AS_A_VARIABLE --sout='#transcode{vcodec=h264, vb=768, fps=25.0, width=1920, height=1080, scale=1, acodec=aac, ab=128, samplerate=32000}:standard{access=udp, mux=ts, dst=239.0.0.1}' 

然後包括該UDP流在您的VLC馬賽克例如:

setup video1 input udp://@239.0.0.1 

後,我想你可以寫一個被稱爲一個變量爲路徑,以新視頻($ YOUR_INPUT_VIDEO_AS_A_VARIABLE)最終殺死早期VLC實例,並與新的重新啓動它的腳本視頻發送到相同的udp地址。在你的情況下,你需要考慮端口,例如發送視頻1到239.0.0.1:1234;視頻2至239.0.0.1:1236;視頻3至239.0.0.1:1238 - 依此類推。

如果沒有發送任何內容,UDP並不關心,所以我想你會有一段很短的時間,沒有播放視頻(殺死舊的VLC實例並傳輸新視頻所需的時間)。

同樣,這是一個解決方法。所以也許這有幫助,否則忘記它。