Итак, у меня есть фильм в формате фильма Matlab (на самом деле, всего несколько кадров RGB), и я хотел бы сохранить его в виде файла y4m. (использовать с x.264). У меня есть вся информация, необходимая для написания заголовка фрейма в начале, и у меня есть функции, которые конвертируют фрейм RGB в YUV, но каждый раз, когда я пытаюсь его сохранить, он сбоку и отслеживание отключено , Я также пытаюсь конвертировать его в C420. Вот моя функция, в настоящее время:
function saveMovToY4m(mov, fileName, f, width, height, fpsNum, fpsDen, inter, ascNum, ascDen)
fileId = fopen(fileName, 'w');
fprintf(fileId, 'YUV4MPEG2 W%d H%d F%d:%d I%c A%d:%d C420jpeg\n', width, height, fpsNum, fpsDen, inter, ascNum, ascDen);
for frame = 1:f-1
frame
imgRgb = frame2im(mov(frame));
imgYuv = (convertRgbToYuv(imgRgb, width, height));
fprintf(fileId,'FRAME\n');
% Print Y component
buf = reshape(imgYuv(:,:,1),width*height,1);
buf = buf;
fwrite(fileId, buf, 'uint8');
% Print U component
Cb = reshape(imgYuv(:,:,2),width*height,1);
CBdown = downsample(Cb, 4);
fwrite(fileId, CBdown, 'uint8');
% Print V component
Cbr = reshape(imgYuv(:,:,3),width*height,1);
CBrDown = downsample(Cbr, 4);
fwrite(fileId, CBrDown, 'uint8');
end
fclose(fileId);
end