Error using VideoWriter/writeVideo (line 344) Frame must be 434 by 343
조회 수: 157 (최근 30일)
이전 댓글 표시
I getting error: Error using VideoWriter/writeVideo (line 344) Frame must be 434 by 343
Error in movie_trial5 (line 22) writeVideo(v,getframe(gca))
Here is my code:
nframes=50;
Frames=moviein(nframes);
x1=linspace(0,L,1000);
x2=linspace(L,2*L,1000);
figure
v = VideoWriter('E:\newfile.avi');
open(v)
for t=1:nframes
y1=sin(x1)*cos(20*t);
y2=sin(2*L-x2)*cos(20*t);
plot (x1,y1,x2,y2,'Linewidth',3)
writeVideo(v,getframe(gca))
end
close(gca)
close(v)
댓글 수: 1
Geoff Hayes
2017년 2월 27일
Perhaps the frame size is changing on an iteration of your for loop which leads to the error. Try doing
for t=1:nframes
y1=sin(x1)*cos(20*t);
y2=sin(2*L-x2)*cos(20*t);
myFrame = getframe(gca);
size(myFrame.cdata)
writeVideo(v,myFrame)
end
Does the size of the frame ever change?
채택된 답변
Walter Roberson
2017년 2월 27일
nframes=50;
Frames=moviein(nframes);
x1=linspace(0,L,1000);
x2=linspace(L,2*L,1000);
figure
v = VideoWriter('E:\newfile.avi');
open(v)
ax = gca();
for t=1:nframes
y1=sin(x1)*cos(20*t);
y2=sin(2*L-x2)*cos(20*t);
if t == 1
h = plot(ax, x1, y1, x2, y2, 'Linewidth',3);
set(ax, 'XLimMode', 'manual', 'YLimMode', 'manual');
else
set(h(1), 'YData', y1);
set(h(2), 'YData', y2);
end
drawnow();
writeVideo(v,getframe(ax))
end
close(gca)
close(v)
Besides being more efficient, this avoids the chance that the frame will change size.
댓글 수: 0
추가 답변 (1개)
venus
2019년 7월 22일
A simple solution is to keep the first figure with its size (with using hold on) and plot all the data in it.
nframes=50;
Frames=moviein(nframes);
x1=linspace(0,L,1000);
x2=linspace(L,2*L,1000);
myfig = figure();
hold on
v = VideoWriter('E:\newfile.avi');
open(v)
for t=1:nframes
y1=sin(x1)*cos(20*t);
y2=sin(2*L-x2)*cos(20*t);
plot (x1,y1,x2,y2,'Linewidth',3)
writeVideo(v,getframe(gca))
clf(myfig);
end
close(gca)
close(v)
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Lighting, Transparency, and Shading에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!