我正在寻找一个在linux上运行的命令行视频工具,这是脚本化的,它可以提供一个内部马赛克视频输出视频。问题是,马赛克视频必须在输出中进行更改。想象一下一个4*4的马赛克视频,但是输入的视频比16个视频多,所以例如每10秒我必须将马赛克中的一个瓦片换成另一个视频。
我已经找到了命令行VLC工具和avisynth,它们可以生成马赛克输出,但我看到它们不支持上面描述的变化视频。
有没有人知道其他选择?
提前感谢!
发布于 2012-05-25 09:56:17
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))这可能是我误解了需求..
发布于 2012-05-30 21:30:36
一种解决方法是在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}'然后在您的VLC马赛克中包含此udp流,例如:
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实例并流式传输新视频所需的时间)。
同样,这也是一种变通办法。所以这可能会有帮助,否则就忘了它吧。
https://stackoverflow.com/questions/10737047
复制相似问题