copying AVI files by using Matlab

Hi everyone
The following two Matlab code (which they do copy new avi files from another)
First one:
- By using VideoWriter
clear all;
close all; %%%%%%%%%%%%%%%%%%%%%%%
[filename pathname] = uigetfile('*.avi','File Selector');
vid = strcat(pathname, filename);
obj = mmreader(vid);
vid = read(obj);
Frames = obj.NumberOfFrames;
new10=VideoWriter('output10.avi');
for x = 1 : Frames
blocks{x}=vid(:,:,:,x);
end
open(new10);
for f=1:1
ss=im2frame(blocks{f});
writeVideo(new10,ss);
end
close(new10);
msgbox('end of operation','Message','warn');
Second one:
- By using avifile
close all
clear all
[filename pathname] = uigetfile('*.avi','File Selector');
vid = strcat(pathname, filename);
obj = mmreader(vid);
vid = read(obj);
frames = obj.NumberOfFrames;
%%
new10=avifile('output10.avi','compression','None');
for x = 1 : frames
a=vid(:,:,:,x);
blocks{x}=a;
end
%%
for f=1:frames
new10=add frame(new10,blocks{f});
end
new10=close(new10);
msgbox('end of operation','Message','warn');
After running the first one program the new avi file is different from the original file (the pixels of frames are different).
While, after running the first one program the new avi file is same asthe original file (the pixels of
frames are similar).
Please inform me the reason
Best regards
Majid

4 个评论

Please read this link and edit/fix your post.
In short, highlight your code, and click the {}Code button.
@Majid Al-Sirafi: Image Analyst is right: Your code is really hard to read. Please remove the empty lines and use the "{} Code" button. You will see that it inserts two leading spaces and an empty line before and after the code. Finally it will not hurt anymore to read the code.
Omit the darn clear all. There is no benefit in removing all loaded functions from the memory and waste time with reloading them from the slow hard disk.
What differences do you observe? Are the pixels completely different, or might it be a problem of the color map or a rounding effect? Does the compression play a role?
hi dear Jan this is first one
close all
clear all
[filename pathname] = uigetfile('*.avi','File Selector');
vid = strcat(pathname, filename);
obj = mmreader(vid);
vid = read(obj);
Frames = obj.NumberOfFrames;
new10=VideoWriter('output10.avi');
for x = 1 : Frames
blocks{x}=vid(:,:,:,x);
end
open(new10);
for f=1:1
ss=im2frame(blocks{f});
writeVideo(new10,ss);
end
close(new10);
msgbox('end of operation','Message','warn');
and this second one
close all
clear all
[filename pathname] = uigetfile('*.avi','File Selector');
vid = strcat(pathname, filename);
obj = mmreader(vid);
vid = read(obj);
frames = obj.NumberOfFrames;
new10=avifile('output10.avi','compression','None');
for x = 1 : frames
a=vid(:,:,:,x);
blocks{x}=a;
end
for f=1:frames
new10=addframe(new10,blocks{f});
end
new10=close(new10);
msgbox('end of operation','Message','warn');
regards
Majid

请先登录,再进行评论。

回答(1 个)

Image Analyst
Image Analyst 2017-12-17
Why not simply use copyfile()?

1 个评论

Actually, this copy is the first step in video processing. later I want to develop this procedure in another processing not just for copying
best regards Majid

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 MATLAB 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by