フィルターのクリア

videoWriter videoReader disorts file on linux

2 ビュー (過去 30 日間)
Tom Wright
Tom Wright 2012 年 7 月 31 日
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

回答 (0 件)

カテゴリ

Help Center および File ExchangeConvert Image Type についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by