matlab代码为:
% qcif yuv420视频删帧, x是文件名,t1是起始帧,t2是终止帧(删除[t1, t2])
% 假定x中的帧数小不超过2400帧
function qcif_delete_frames(x, t1, t2)
width = 176;
height = 144;
n = width * height;
m = n * 3 / 2; % yuv420
fid = fopen(x,'r');
[a, count] = fread(fid, [m, 800], 'uchar'); %分步转到a中,以免内存溢出
a = uint8(a); % 节省内存
[b, count] = fread(fid, [m, 800], 'uchar');
b = uint8(b);
a = [a,b];
[b, count] = fread(fid, [m, 800], 'uchar');
b = uint8(b);
a = [a,b];
fclose(fid);
% a矩阵的每一列代表一帧,下面语句是删除[t1, t2]之间的所有帧
a(: , t1 : t2) = [];
fidd = fopen(['deleted_', x], 'w');
fwrite(fidd, a, 'uchar');
fclose(fidd);