【发布时间】:2011-01-17 03:42:03
【问题描述】:
所以,我有一个 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
【问题讨论】: