伙计们,我想把一个avi文件转换成yuv420视频剪辑。有什么方法可以做到这一点吗?谢谢!
发布于 2010-09-01 12:37:18
你可以把一个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);发布于 2011-05-09 21:22:08
我不推荐使用Matlab。使用mplayer/mencoder可以轻松地完成您想要做的事情……为什么要用Matlab呢?
mencoder.exe -of rawvideo clock.avi -o clock.yuv -nosound -ovc raw
如果颜色不正确,您可以添加-vf swapuv来交换U和V分量。
https://stackoverflow.com/questions/3615036
复制相似问题