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!