如何将avi文件转换为yuv 420(软件/ matlab /源代码/ c / c ++任何东西)

时间:2010-09-01 04:24:16

标签: matlab avi yuv

伙计我想将avi文件转换为yuv 420视频片段。有没有办法做到这一点? THX!

2 个答案:

答案 0 :(得分:2)

您可以将AVI文件读入MATLAB using the built-in mmreader class。将AVI帧读入电影帧的结构数组后,可以使用MathWorks File Exchange中提交的saveFileYuv函数将它们保存为YUV文件:

您的代码可能如下所示:

%# Get the video data:

vidObj = mmreader('myVideo.avi');  %# Create a video file object
nFrames = vidObj.NumberOfFrames;   %# Get the number of frames
vidHeight = vidObj.Height;         %# Get the image height
vidWidth = vidObj.Width;           %# Get the image width

%# Preallocate the structure array of movie frames:

mov(1:nFrames) = struct('cdata',zeros(vidHeight,vidWidth,3,'uint8'),...
                        'colormap',[]);  %# Note that colormap is empty!

%# Read each video frame into the structure array:

for k = 1:nFrames
  mov(k).cdata = read(vidObj,k);  %# Place frame k in the cdata field of mov(k)
end

%# Save the movie frame array as a YUV 4:2:0 file:

saveFileYuv(mov,'myVideo.yuv',1);

答案 1 :(得分:0)

我不建议使用Matlab。你想做什么可以使用mplayer / mencoder轻松完成...为什么要使用Matlab?

mencoder.exe -of rawvideo clock.avi -o clock.yuv -nosound -ovc raw

如果colrs不正确,您可以添加-vf swapuv来交换U和V组件。