как конвертировать AVI файл в YUV 420 (программное обеспечение / Matlab / исходный код / ​​C / C + + все, что угодно) - PullRequest
2 голосов
/ 01 сентября 2010

Ребята, я хочу конвертировать AVI-файл в видеоклип YUV 420. Есть ли способ сделать это? ТНХ!

Ответы [ 2 ]

2 голосов
/ 01 сентября 2010

Вы можете прочитать AVI-файл в MATLAB , используя встроенный mmreader класс . После прочтения кадров AVI в массив структурных кадров фильмов их можно сохранить в виде файла YUV с помощью функции saveFileYuv, представленной в этом представлении из MathWorks File Exchange *1006*:

Ваш код может выглядеть примерно так:

%# 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);
0 голосов
/ 09 мая 2011

Я не рекомендую использовать Matlab.То, что вы хотите сделать, легко сделать с помощью mplayer / mencoder ... Зачем использовать для этого Matlab?

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

Вы можете добавить -vf swapuv, чтобы поменять компоненты U и V, если цвета не правильные.

...