2014-01-30 97 views
0

我想記錄我正在創建的幀的4分鐘模擬。這裏是我的代碼:更改VideoWriter類中視頻的持續時間

%% 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

由於durationFrameRate*numberOfFrames,你可以通過設置

writerObj.FrameRate = numberOfFrames/targetDurationInSeconds; 
0

如果你想保持到達目標時間的writerObj.FrameRate固定爲4,那麼你可以用一個簡單的for循環替換您的while循環:

... 
writerObj.FrameRate = 4; 
... 
Duration = 240; 
for k = 1:round(Duration/writerObj.FrameRate) 
    ... 
end 

如果Duration不能被幀速率整除,那麼實際的視頻持續時間可能會更長或更短一幀。可以使用ceilfloor而不是round來保證視頻總是至少分別爲Duration秒或總是小於或等於Duration秒。

順便說一句,cell是Matlab中常見數據類型的名稱,因此可能不是變量的良好名稱。