我想记录我正在创建的帧的4分钟模拟。这是我的代码:
%% Creating the video with VideoWriter
writerObj = VideoWriter('RAW.avi');
writerObj.FrameRate=4;
open(writerObj);
k=0;
while k < N
cell_prev=cell;
cell=newStep_noise(cell_prev,n,H1,M,H2,D,K,P);
diff_norm_vect=computeDiff(cell,n);
scatter(X,Y,50,diff_norm_vect,'filled');
frame = getframe;
writeVideo(writerObj,frame);
k=k+1;
end
close(writerObj);
我无法使用writerObj.Duration=240;
,因为持续时间是VideoWriter
类中的只读属性。
答案 0 :(得分:0)
由于duration
为FrameRate*numberOfFrames
,您可以通过设置
writerObj.FrameRate = numberOfFrames/targetDurationInSeconds;
答案 1 :(得分:0)
如果您想将writerObj.FrameRate
固定为4,那么您可以使用更简单的while
循环替换for
循环:
...
writerObj.FrameRate = 4;
...
Duration = 240;
for k = 1:round(Duration/writerObj.FrameRate)
...
end
如果Duration
不能被帧速率整除,则实际视频持续时间可能会长一帧或更短。可以使用ceil
或floor
代替round
来保证视频始终至少Duration
秒或始终小于或等于Duration
}秒,分别。
顺便说一句,cell
是Matlab中常见数据类型的名称,因此可能不是变量的好名称。