C++ 将多个视频合并为一个
我有三个视频:C++ 将多个视频合并为一个,c++,video,ffmpeg,gstreamer,C++,Video,Ffmpeg,Gstreamer,我有三个视频: 用摄像机拍摄的演讲 讲座中使用的电脑桌面截图的视频 还有白板的视频 我想创建一个最终视频,其中三个组件占据屏幕的某个区域 是否有开源软件允许我这样做(mencoder、ffmpeg、virtualdub…)?你推荐哪一种 或者是否有一个C/C++API可以让我以编程方式创建类似的东西 编辑将来将有多个录制的讲座。这意味着我需要一个通用/自动化的解决方案 我目前正在检查是否可以用GStreamer编写一个应用程序来完成这项工作。对此有何评论 解决了 我用GStreamer的视频
- 用摄像机拍摄的演讲
- 讲座中使用的电脑桌面截图的视频
- 还有白板的视频
将来将有多个录制的讲座。这意味着我需要一个通用/自动化的解决方案 我目前正在检查是否可以用GStreamer编写一个应用程序来完成这项工作。对此有何评论 解决了
我用GStreamer的视频混合器元素成功地做到了这一点。我使用gst-launch语法创建一个管道,然后使用gst\u-parse\u-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"
如果您只想将视频片段合并到单个视频中并裁剪视频,我会使用虚拟配音。可以很容易地完成。在马赛克部分下查看示例
我已经使用了很多ffmpeg,我从来没有偶然发现过这个功能,但这并不意味着它不存在。你可以一直用C或C++自己用LIB格式和LIVAVCODEC(FFMPEG库)来做,如果你正在寻找一个项目,但你必须自己动手弄脏你的手。如果您只是想完成视频,而不是修补代码,那么一定要使用预先制作的工具,如avisynth或virtualdub。可以使用ffmpeg;我自己做的。这就是说,它在技术上是复杂的。也就是说,这是你可能使用的任何其他软件的核心本质 过程如下所示:
- 从源2解复用音频
- 从源3解复用音频
- 将视频从源1解复用到MPEG1
- 来自源2的解复用视频
- 来自源3的解复用视频
- 连接音频1+音频2+音频3
- 连接视频1+视频2+视频3
- 将音频123和视频123多路复用到目标
- 编码为目标格式
如果你愿意的话,这是一个很有教育意义的项目。如果您的目标只是为了一次性项目将一些视频拼接在一起,那么使用GUI工具可能是一个更好的主意。您可以使用VLC将多个视频文件/流组合成一张图片: 有一个命令行界面,因此您可以编写脚本/使其自动化
看来我以后会经常做这种事情,所以我真的很想深入研究一下。谢谢你的信息!他不是在问合成视频,以便在一帧内同时显示所有三个视频吗?听起来这只是把视频连接起来,让它们一个接一个地播放。嗯……事实上,我想你可能是对的。是的,我的回答是“只是”连接。事实上,我甚至用了两次“concatenate”这个词。或者你可以用AdobeAfterEffects在30秒内完成整个过程(当然价格比免费的稍高)