Clear Filters
Clear Filters

Error using VideoWriter/writeVideo (line 344) Frame must be 434 by 343

162 views (last 30 days)
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 Comment
Geoff Hayes
Geoff Hayes on 27 Feb 2017
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?

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 27 Feb 2017
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.

More Answers (1)

venus
venus on 22 Jul 2019
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)

Categories

Find more on Environment and Settings in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!