C间隔帧读取yuv视频序列并将提取出的帧序列组成新的yuv文件

原创 2013年12月05日 21:42:48

yuv格式的视频,可能是由于拍摄设备的问题,发现其中相邻两帧完全一样,为了进行后续的处理,必须将冗余去除,即要得到偶数或奇数序列的帧组成的视频,因此,利用C实现了提取与重组。对于其他格式的文件方法基本类似。


#include<stdio.h>

char data[1382400];  //1382400是我提前计算好的每帧的大小 每帧像素个数为1280×720,且yuv每个像素占用1.5byte的像素空间。                                          //所以每帧大小为 1280*760*1.5=1382400                                      

int main()
{
  int nFrame,size;
  FILE * in,*out;

  //获取输入序列
  in = fopen("F:\\vcTest\\Test\\1.yuv","rb+");  //rb+表示读写一个二进制的文件
  out = fopen("F:\\vcTest\\Test\\ceshi.yuv","a");  //a表示以附加的方式打开只写文件,若指定位置没有该文件,则创建该文件,
                                                                              //若存在该文件,则将要添加的内容放在在文件的末尾

  if(in==NULL)
  {
      return  -1;
  }

  fseek(in,0,SEEK_END);   //将文件指针移到文件末尾
  size=ftell(in);     //得到文件尾相对于文件首的位移,即文件的总字节数
  rewind(in);       //重置文件指针指向文件头部

  nFrame=size/1382400; //得到视频文件的总帧数

  //循环提取出奇数帧
  for(int i=1;i<=nFrame;i+=2)
  {  
    fread(data,sizeof(char),sizeof(data),in);   
    fseek(in,1382400,SEEK_CUR);
    fwrite(data,sizeof(char),sizeof(data),out);  
 
  }
  fclose(in);
  fclose(out);
  return 0;
}


程序中用到的fread,fwrite等函数在我的另一篇博文有详细介绍点击打开链接

此程序vs2012下编译通过。


转载请注明出处。






对彩色YUV视频进行二进制文件读写时候的注意事项

打开并读写YUV彩色视频时,在写yuv时候,开始用的是fopen(“.......”,"r+");结果视频yuv文件,有很厉害的抖动和颜色的偏移。后来改成如下,即fopen(“.......”,"rb...
  • andyfu57
  • andyfu57
  • 2015年08月26日 16:07
  • 707

YUV文件格式

#include #include #include int main(){  //读取文件test_yuv420p_320x180.yuv  FILE* fp_yuv=fopen("tes...
  • lbaihao
  • lbaihao
  • 2016年08月09日 22:48
  • 1379

读取YUV视频文件

如何读取YUV视频文件例如:QCIF应该是176×144若是4:2:0的QCIF,每帧图像应该是176×144个Y,44×36个U,以及44×36个V。根据资料介绍,YUV有很多格式YUY2 格式,以...
  • GuanhuaYang
  • GuanhuaYang
  • 2007年09月14日 09:14
  • 6008

关于YUV视频的读取、播放,保存帧图片、以及处理的图像保存为YUV视频。

声明:原创博文,禁止转载。否则将追究法律责任!http://blog.csdn.net/sdlyjzh/article/details/8246752 要对YUV视频进行处理,首先要将视频保存为一帧...
  • sdlyjzh
  • sdlyjzh
  • 2012年12月01日 16:35
  • 12839

FFmpeg浅尝辄止(二)——YUV视频序列编码为视频

上一篇已经写了如何配置好开发环境,这次就先小试牛刀,来个视频的编码。搞视频处理的朋友肯定比较熟悉YUV视频序列,很多测试库提供的视频数据都是YUV视频序列,我们这里就用用YUV视频序列来做视频。关于Y...
  • yang_xian521
  • yang_xian521
  • 2012年06月28日 11:30
  • 18819

yuv视频序列

  • 2016年06月18日 22:05
  • 127B
  • 下载

C间隔帧读取yuv视频序列并将提取出的帧序列组成新的yuv文件

yuv格式的视频,可能是由于拍摄设备的问题,发现其中相邻两帧完全一样,为了进行后续的处理,必须将冗余去除,即要得到偶数或奇数序列的帧组成的视频,因此,利用C实现了提取与重组。对于其他格式的文件方法基本...
  • menyangyang
  • menyangyang
  • 2013年12月05日 21:42
  • 1821

[学习笔记]基于ffmpeg的视频解码,输出YUV图像到文件。

虽然在音视频领域工作了一段时间,但是对于ffmpeg还是比较陌生,从这周开始入手学习。 拜读了雷霄骅的《最简单的基于FFMPEG+SDL的视频播放器 ver2》,受益匪浅,链接如下 http...
  • qq_32430349
  • qq_32430349
  • 2015年11月06日 14:49
  • 2227

HM-16.0编码过程:将YUV文件编码成HEVC格式的码流

文章以akiyo_qcif.yuv为例,描述了HM-16.0的编码过程,将YUV文件编码成了HEVC格式的码流(*.bin)。...
  • smilehehe110
  • smilehehe110
  • 2017年01月18日 21:46
  • 1510

YUV420视频序列文件研究

在网上可以很容易的找到YUV420的视频序列文件,这些文件都以.yuv作为后缀,文件存储的是一段视频的yuv420图像格式的一连串数据。文件中不包含视频和帧的尺寸及其他信息,只是纯图像数据。  ...
  • lifan_3a
  • lifan_3a
  • 2014年08月20日 14:32
  • 394
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C间隔帧读取yuv视频序列并将提取出的帧序列组成新的yuv文件
举报原因:
原因补充:

(最多只允许输入30个字)