用MATLAB实现多个视频的同步播放
我搜索了internet和堆栈溢出,但找不到解决方案,甚至找不到解决问题的有用提示 我需要在MATLAB中编写一个专门的视频注释软件,该软件必须能够在GUI上同时播放多个视频(至少2个)。视频文件是XVID编码的。到目前为止,我基本上只是调整了mathworks.com的视频播放示例(xylophon.avi,请参见电影()说明) 我熟悉mmreader、VideoReader、movie和implay功能,但仍面临两个问题:用MATLAB实现多个视频的同步播放,matlab,video,video-processing,Matlab,Video,Video Processing,我搜索了internet和堆栈溢出,但找不到解决方案,甚至找不到解决问题的有用提示 我需要在MATLAB中编写一个专门的视频注释软件,该软件必须能够在GUI上同时播放多个视频(至少2个)。视频文件是XVID编码的。到目前为止,我基本上只是调整了mathworks.com的视频播放示例(xylophon.avi,请参见电影()说明) 我熟悉mmreader、VideoReader、movie和implay功能,但仍面临两个问题: 即使我只读取少量帧(如在xylophon.avi示例中),我的程序也
有什么建议吗?谢谢 首先,MATLAB不是多线程的。同时做两件事是困难的。尝试突破到Java。Matlab使用JIDE作为基于Swing的图形前端。用于将MATLAB代码编译为Java,或将您自己的“面板”添加到IDE中,如所示。原则上,您可以将每个视频帧显示为图像,并交替更新每个视频,但要以正确的帧速率播放可能会很困难 试试下面的方法。这可能无法正常工作,但您应该能够更新它
v1 = VideoReader(firstVideo)
v2 = VideoReader(secondVideo)
i1 = 0;
i2 = 0;
while i1 < v1.NumberOfFrames && i2 < v2.NumberOfFrames
if i1 < v1.NumberOfFrames
i1 = i1+1;
subplot(1,2,1)
image(v1.read(i1))
end
if i2 < v2.NumberOfFrames
i2 = i2+1;
subplot(1,2,2)
image(v2.read(i2))
end
drawnow
end
v1=视频阅读器(第一视频)
v2=视频阅读器(第二视频)
i1=0;
i2=0;
而i1
您可以在两个不同的窗口中显示视频,并通过给视频一个句柄并调用其未记录的播放功能来同时开始播放。这也消除了你可能与长度不等的视频产生的任何冲突
handle1 = implay('file1.mp4');
handle2 = implay('file2.mp4');
handle1.Parent.Position = [100 100 640 480];
handle2.Parent.Position = [740 100 640 480];
play(handle1.DataSource.Controls)
play(handle2.DataSource.Controls)
我在考虑是否可以使用并行工具箱完成多线程处理。然而,我决定用另一种语言实现这个工具。无论如何谢谢你!