Cannot using movie2avi in MATLAB

I am trying to use the movie2avi function in MATLAB. I simply copy the sample program in my MATLAB R2015a:
nFrames = 20;
% Preallocate movie structure.
mov(1:nFrames) = struct('cdata', [],...
'colormap', []);
% Create movie.
Z = peaks; surf(Z);
axis tight manual
set(gca,'nextplot','replacechildren');
for k = 1:nFrames
surf(sin(2*pi*k/20)*Z,Z)
mov(k) = getframe(gcf);
end
% Create AVI file.
movie2avi(mov, 'myPeaks.avi', 'compression', 'None');
But an error message appears:
Error using avi
Unexpected Error. Reason: Failed to open file.
Error in audiovideo.internal.aviwriter (line 168)
aviobj.FileHandle = avi('open',filename);
Error in movie2avi (line 63)
avimov = audiovideo.internal.aviwriter(filename,varargin{:});
Error in MakeMovie (line 36)
movie2avi(mov, 'myPeaks.avi', 'compression', 'None');
What's wrong here? Please help.

Answers (1)

Dinesh Iyer
Dinesh Iyer on 16 Oct 2015
Can you check if the location you are attempting to write the file to has write permissions?
movie2avi is being deprecated. I would recommend using VideoWriter as it allows you the use of more modern compression methods such as MPEG-4, MJ200), MJPEG AVI.
See VideoWriter documentation for examples.
Hope this helps.
Dinesh

5 Comments

In particular check the directory that you are in when you try to execute the code. If you are on MS Windows Vista or later (I think it is) then if you are inside the directory that MATLAB was installed in, then you will not be able to write files there.
I have check the path, my MATLAB is in C drive but I am attempting to write in D drive. About checking for permission, may I ask how to check it? I am just a new MATLAB user and don't know how to check for the directory and permission. Thank you.
Try the command
fileattrib .
where the period ('.') is part of the command. That should tell you about the permissions of the current directory.
I have typed this command and it shows:
Name: 'C:\Users\SupUsr\Desktop\Postdoctoral Research\DDFD\Practice'
archive: 0
system: 0
hidden: 0
directory: 1
UserRead: 1
UserWrite: 1
UserExecute: 1
GroupRead: NaN
GroupWrite: NaN
GroupExecute: NaN
OtherRead: NaN
OtherWrite: NaN
OtherExecute: NaN
It means that I can read and write in this directory. So what cause the error?
I do not know for sure, but I suggest trying again in a directory that does not have a space in its name.

Sign in to comment.

Categories

Tags

Asked:

on 16 Oct 2015

Commented:

on 20 Oct 2015

Community Treasure Hunt

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

Start Hunting!