MATLAB: Can’t play video file

play video

I can't get the final video to play. It has a size of 1×1 when it should be 401×401.
I'm using R2014a
dir = '/Users/douglasbrenner/Documents/Rosen/AOSLO_MA_AVIs/';
base_name = 'media';
nimages = 11;
size = 31; %size of subimage around alignment point must be odd.
size_from_center = (size - 1)/2;
for i = 3:3%nimages
avi = [dir,base_name,int2str(i),'.avi'];
disp('Converting')
disp(avi)
a = VideoReader(avi)
v = VideoWriter('aligned.avi','Uncompressed AVI');
open(v);
n_frames = a.NumberOfFrames
figure(1);
frame = read(a,1);
imshow(frame);
[Xc(1),Yc(1)] = getpts(1);
subframe = frame(int16(Yc(1)) - size_from_center:int16(Yc(1))+size_from_center,int16(Xc(1))-size_from_center:int16(Xc(1))+size_from_center);
center = centroid(subframe,size);
yc1 = Yc(1);
xc1 = Xc(1);
Xc(1) = center(2) - size_from_center;
Yc(1) = center(1) - size_from_center;
J = imtranslate(frame,[Xc(1),Yc(1)],'cubic');
writeVideo(v,uint8(J(a.Height)))
for j = 2:5%n_frames
j
frame = read(a,j);
subframe = frame(int16(yc1) - size_from_center:int16(yc1)+size_from_center,int16(xc1)-size_from_center:int16(xc1)+size_from_center);
center = centroid(subframe,size);
Xc(j) = center(2) - size_from_center;
Yc(j) = center(1) - size_from_center;
J = imtranslate(frame,[Xc(j),Yc(j)],'cubic');
writeVideo(v,uint8(J(a.Height)))
end
%
Mx = mean(Xc)
Sx = std(Xc)
My = mean(Yc)
Sy = std(Yc)
end
close(v);
avi = 'aligned.avi';
a = VideoReader(avi);
implay(a);
thanks

Best Answer

This code works. I now I need to learn how to have two movie players open at once and adjust the frame rates.
dir = '/Users/douglasbrenner/Documents/Rosen/AOSLO_MA_AVIs/';
base_name = 'media';
nimages = 11;
size = 31; %size of subimage around alignment point must be odd.
size_from_center = (size - 1)/2;
for i = 3:3%nimages
avi = [dir,base_name,int2str(i),'.avi'];
disp('Converting')
disp(avi)
a = VideoReader(avi)
implay(avi)
v = VideoWriter('aligned.avi','Uncompressed AVI');
open(v);
n_frames = a.NumberOfFrames
figure(1);
frame = read(a,1);
imshow(frame);
[Xc(1),Yc(1)] = getpts(1);
subframe = frame(int16(Yc(1)) - size_from_center:int16(Yc(1))+size_from_center,int16(Xc(1))-size_from_center:int16(Xc(1))+size_from_center);
center = centroid(subframe,size);
yc1 = Yc(1);
xc1 = Xc(1);
Xc(1) = center(2) - size_from_center;
Yc(1) = center(1) - size_from_center;
J = imtranslate(frame,[Xc(1),Yc(1)],'cubic');
writeVideo(v,uint8(J(1:a.Height,1:a.Width)))
for j = 2:n_frames
j
frame = read(a,j);
subframe = frame(int16(yc1) - size_from_center:int16(yc1)+size_from_center,int16(xc1)-size_from_center:int16(xc1)+size_from_center);
center = centroid(subframe,size);
Xc(j) = center(2) - size_from_center;
Yc(j) = center(1) - size_from_center;
J = imtranslate(frame,[Xc(j),Yc(j)],'cubic');
writeVideo(v,uint8(J(1:a.Height,1:a.Width)))
end
%
Mx = mean(Xc)
Sx = std(Xc)
My = mean(Yc)
Sy = std(Yc)
close(v);
end
avi = 'aligned.avi'
implay(avi);
Related Question