我正在尋找在Linux上運行的命令行視頻工具,它可以編寫腳本,並且可以爲輸出視頻提供馬賽克視頻。問題是,馬賽克視頻必須在輸出內部進行更改。想象一下4 * 4的馬賽克視頻,但是輸入的視頻比16多,所以例如每10秒鐘我必須將馬賽克中的一個圖塊更改爲另一個視頻。馬賽克視頻輸出的命令行視頻工具
我發現命令行VLC工具和avisynth可以生成馬賽克輸出,但正如我所看到的,他們不支持上述變化的視頻。
有人知道其他選項嗎?
在此先感謝!
我正在尋找在Linux上運行的命令行視頻工具,它可以編寫腳本,並且可以爲輸出視頻提供馬賽克視頻。問題是,馬賽克視頻必須在輸出內部進行更改。想象一下4 * 4的馬賽克視頻,但是輸入的視頻比16多,所以例如每10秒鐘我必須將馬賽克中的一個圖塊更改爲另一個視頻。馬賽克視頻輸出的命令行視頻工具
我發現命令行VLC工具和avisynth可以生成馬賽克輸出,但正如我所看到的,他們不支持上述變化的視頻。
有人知道其他選項嗎?
在此先感謝!
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))
可能的是,我已雖然誤解要求..
一個解決可能是在用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實例並傳輸新視頻所需的時間)。
同樣,這是一個解決方法。所以也許這有幫助,否則忘記它。
謝謝,工作! –