我有三个视频:
是否有开源软件可以实现这一点(例如mencoder、ffmpeg、virtualdub)?你推荐哪一个?
还是有C/C++ API可以使我以编程方式创建这样的东西? 编辑
将来会有多个录制的讲座。这意味着我需要一个通用/自动化的解决方案。
我正在检查是否可以使用GStreamer编写应用程序来完成此工作。对此有何评论? 已解决!
我成功地使用GStreamer的videomixer元素完成了这个任务。我使用gst-launch语法创建一个管道,然后使用gst_parse_launch加载它。这是实现复杂管道的一种非常高效的方法。
以下是一个管道,它接收两个传入的视频流和一个标志图像,并将它们混合成一个流,然后将其复制,以便同时显示和保存到磁盘。
- 用摄像机拍摄的讲座
- 讲座中使用的计算机桌面捕获视频
- 白板视频
是否有开源软件可以实现这一点(例如mencoder、ffmpeg、virtualdub)?你推荐哪一个?
还是有C/C++ API可以使我以编程方式创建这样的东西? 编辑
将来会有多个录制的讲座。这意味着我需要一个通用/自动化的解决方案。
我正在检查是否可以使用GStreamer编写应用程序来完成此工作。对此有何评论? 已解决!
我成功地使用GStreamer的videomixer元素完成了这个任务。我使用gst-launch语法创建一个管道,然后使用gst_parse_launch加载它。这是实现复杂管道的一种非常高效的方法。
以下是一个管道,它接收两个传入的视频流和一个标志图像,并将它们混合成一个流,然后将其复制,以便同时显示和保存到磁盘。
desktop. ! queue
! ffmpegcolorspace
! videoscale
! video/x-raw-yuv,width=640,height=480
! videobox right=-320
! ffmpegcolorspace
! vmix.sink_0
webcam. ! queue
! ffmpegcolorspace
! videoscale
! video/x-raw-yuv,width=320,height=240
! vmix.sink_1
logo. ! queue
! jpegdec
! ffmpegcolorspace
! videoscale
! video/x-raw-yuv,width=320,height=240
! vmix.sink_2
vmix. ! t.
t. ! queue
! ffmpegcolorspace
! ffenc_mpeg2video
! filesink location="recording.mpg"
t. ! queue
! ffmpegcolorspace
! dshowvideosink
videotestsrc name="desktop"
videotestsrc name="webcam"
multifilesrc name="logo" location="logo.jpg"
videomixer name=vmix
sink_0::xpos=0 sink_0::ypos=0 sink_0::zorder=0
sink_1::xpos=640 sink_1::ypos=0 sink_1::zorder=1
sink_2::xpos=640 sink_2::ypos=240 sink_2::zorder=2
tee name="t"