cif420格式YUV视频的删帧函数

来源:互联网 发布:阿里云二级域名 编辑:程序博客网 时间:2024/05/05 20:25

         先给出qcif yuv420删帧的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; % yuv420fid = 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);   


       至于cif, 思路也是一样的,差别只是:cif每一帧的尺寸要大些,所以更要防止a矩阵的内存溢出,每一次少读入一些帧。你可以尝试着去改一下代码,我就不赘述了。



原创粉丝点击