更改VideoWriter类中的视频持续时间

时间:2014-01-30 13:41:19

标签: matlab video

我想记录我正在创建的帧的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类中的只读属性。

2 个答案:

答案 0 :(得分:0)

由于durationFrameRate*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不能被帧速率整除,则实际视频持续时间可能会长一帧或更短。可以使用ceilfloor代替round来保证视频始终至少Duration秒或始终小于或等于Duration }秒,分别。

顺便说一句,cell是Matlab中常见数据类型的名称,因此可能不是变量的好名称。