我想编写一个简单的Linux CLI应用程序,可以采取2个视频源(一个主持人说话的1和1与他们的幻灯片,也没有音频)和合并。
我想整个输出视频是两个原始视频,相映成趣。 如果做不到这一点,我的第二个最好的选择将是一个“画中画”的风格的视频,在角落里一个小框演示。
从几个小时研究,GStreamer的看起来似乎能够做到这一点。 任何人都可以证实它,我花更多的时间想出来过吗?
如果不能,是否有其他的API,在那里,我也许可以使用?
我想编写一个简单的Linux CLI应用程序,可以采取2个视频源(一个主持人说话的1和1与他们的幻灯片,也没有音频)和合并。
我想整个输出视频是两个原始视频,相映成趣。 如果做不到这一点,我的第二个最好的选择将是一个“画中画”的风格的视频,在角落里一个小框演示。
从几个小时研究,GStreamer的看起来似乎能够做到这一点。 任何人都可以证实它,我花更多的时间想出来过吗?
如果不能,是否有其他的API,在那里,我也许可以使用?
下面是使用GST推出(安装在Ubuntu / Debian的GStreamer的工具包)一个简单的(工作)的设置:
GST推出v4l2src设备=的/ dev /视频1! videoscale! ffmpegcolorspace! 视频/ X-原始YUV,宽度= 640,高度= 480! videobox边界-α= 0左= -640! videomixer名=混用! ffmpegcolorspace! xvimagesink v4l2src! videoscale! ffmpegcolorspace! 视频/ X-原始YUV,宽度= 640,高度= 480! videobox右= -640! 混合。
这基本上读取使用视频4的linux 2,一个从默认设备和从/ dev / VIDEO1另一个流的两个视频。 您可能要改变,如果你的设置是不同的。
第一部分(非粗体)负责读取从捕获装置的视频,谈判的尺寸和色彩空间(videoscale!ffmpegcolorspace),迫使一个特定视频格式(视频/ X-原始YUV,宽度= 640,高度= 480),加入640个透明像素向左侧(从而移动右图)和创建具有名称“混合”一个videomixer。 最后,再次自动协商的色彩空间和使用的XVideo窗口中显示的结果。
第二部分(以粗体显示)读取第二视频流(从缺省捕获装置,添加装置=的/ dev / VideoX时选择不同的设备),则执行相同的色彩空间,大小协商和视频格式选择作为相应于第一串,然后移动视频640个像素的左侧和结果反馈给元素命名为混合 (我们的视频混合器)。 在最后的点是必需的,指示的GStreamer搜索名为“混合”,而不是寻找一个过滤器的现有元素。
你可以用filesrc位置= video.avi更换v4l2src设备=的/ dev /视频1! decodebin获得从视频文件的输入。
与jpegenc更换xvimagesink! avimux! 文件接收地点= out.avi写结果的视频文件。
原来的GStreamer可以合并两个视频,使用videomixer过滤器把它们并排到输出视频。
一个基本的管道,它有两个输入文件,扩展他们是相同的大小,然后将它们合并,并将其编码为Theora视频可能是这样的:
filesrc -> decodebin -> ffmpegcolourspace -> videoscale -> videobox -> videorate
\
filesrc -> decodebin -> ffmpegcolourspace -> videoscale -> videorate -> videomixer -> ffmpegcolourspace -> theoraenc -> oggmux -> filesink
你如何实现这个管道取决于语言。 我的原型与Ruby绑定,和它的作品真的很好。
AviSynth的在我脑海中。 我已经使用了很多年以前在Windows下,它是在任意的后处理相当不错。 AviSynth的V3应该是Linux下本地运行,但还远远没有准备好。 有运行以前版本葡萄酒,虽然工具。
MEncoder的可以做到这一点本身在Linux上。 您可以派生自己的代码,或调用的二进制文件。