videoWriter videoReader disorts file on linux

2 Ansichten (letzte 30 Tage)
Tom Wright
Tom Wright am 31 Jul. 2012
Matlab R2011a on Ubuntu with latest version of gstreamer 0.10
Basically my code uses videoReader to read in video frames then pads alternate lines of the video with a few pixels to improve the interlacing. I then write the new video out with videoWriter. The code seems to work perfectly under Windows however when I run it on my linux machine the output file is distorted. I have uploaded examples of input http://dl.dropbox.com/u/91060467/input.avi and output http://dl.dropbox.com/u/91060467/output.avi videos to dropbox. Code is reproduced below.
Thanks
if true
function paddingTest(filename,iPad)
[pathstr, name, ext] = fileparts(filename);
mov=VideoReader([pathstr filesep name ext]);
nFrames=mov.NumberOfFrames;
vidHeight=mov.Height;
vidWidth=mov.Width;
frame_in(vidHeight,vidWidth,3)=uint8(0);
frame_out(mov.Height,mov.Width+iPad,3)=uint8(0);
movie_out(1:mov.NumberOfFrames) = struct('cdata', frame_out,'colormap', []);
for idx_frame=1:mov.NumberOfFrames
frame_in=read(mov,idx_frame);
frame_out(1:2:vidHeight,:,:)=[frame_in(1:2:vidHeight,:,:) uint8(zeros(vidHeight/2,iPad,3))];
frame_out(2:2:vidHeight,:,:)=[uint8(zeros(vidHeight/2,iPad,3)) frame_in(2:2:vidHeight,:,:)];
movie_out(idx_frame).cdata=frame_out;
end
writerObj=VideoWriter([pathstr filesep name '_new' ext],'Uncompressed AVI');
open(writerObj);
writeVideo(writerObj,movie_out);
close(writerObj);
end

Antworten (0)

Kategorien

Mehr zu Convert Image Type finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by