首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于马赛克视频输出的命令行视频工具

用于马赛克视频输出的命令行视频工具
EN

Stack Overflow用户
提问于 2012-05-24 19:57:17
回答 2查看 1.5K关注 0票数 2

我正在寻找一个在linux上运行的命令行视频工具,这是脚本化的,它可以提供一个内部马赛克视频输出视频。问题是,马赛克视频必须在输出中进行更改。想象一下一个4*4的马赛克视频,但是输入的视频比16个视频多,所以例如每10秒我必须将马赛克中的一个瓦片换成另一个视频。

我已经找到了命令行VLC工具和avisynth,它们可以生成马赛克输出,但我看到它们不支持上面描述的变化视频。

有没有人知道其他选择?

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-25 09:56:17

AviSynth可以加入视频,因此您可以随时在脚本中更改视频源。

例如,在下面的示例中,四个输入的左上角视频将在6秒后更改为不同的视频:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2012-05-30 21:30:36

一种解决方法是在VLC生成的UDP流上运行您的视频,例如:

代码语言:javascript
复制
    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流,例如:

代码语言:javascript
复制
   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实例并流式传输新视频所需的时间)。

同样,这也是一种变通办法。所以这可能会有帮助,否则就忘了它吧。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10737047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档