我正在尝试使用matlab捕获视频。 视频的持续时间可能大约为15-60分钟,所以它非常大,我把它存储到磁盘而不是内存。 (我不需要在线进动) 我想以高分辨率捕捉视频(1280x720会很好)。但是使用高分辨率,我遇到了问题,Matlab没有足够快地将数据记录到磁盘上。
以下是我的观察: 分辨率为640x480:一切正常。 分辨率为800x600或以上:我的RAM的利用率线性增加,同时捕获视频并在我停止捕获视频后线性减少。在停止命令之后,Matlabs命令窗口被阻止了一段时间。在那个时候,我可以看到.avi文件正在增长。当然,我选择分辨率越高,RAM利用率越高。
所以我的问题是,我不能使用1280x720的分辨率,因为在将视频加上大约5分钟后,我的整个RAM(8GB)被利用了,我得到了一个可怕的内存不足错误。 (实际情况:使用我整个RAM的视频只有大约300 MB。那必须是MJPEG压缩率)
有人知道如何解决我的问题吗? Matlabs VideoWriter类太慢了,我什么也做不了?其他用于视频捕获的软件也可以制作高清视频..
祝你好运, RICHI
为了完整性,这是我使用的代码:
path = 'C:\Daten\test\test.avi';
videoRec = videoinput('winvideo',1,'MJPG_1280x720');
src = getselectedsource(videoRec);
src.FrameRate = '30.0000';
set(videoRec,'TriggerRepeat',inf);
set(videoRec, 'LoggingMode', 'disk');
logger = VideoWriter(path);
set(logger,'FrameRate',str2double(src.FrameRate));
videoRec.Disklogger = logger;
start(videoRec);