C间隔帧读取yuv视频序列并将提取出的帧序列组成新的yuv文件
来源:互联网 发布:淘宝app添加桌面 编辑:程序博客网 时间:2024/04/27 22:59
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下编译通过。
转载请注明出处。
- C间隔帧读取yuv视频序列并将提取出的帧序列组成新的yuv文件
- MATLAB 将YUV格式视频转换为图像帧序列
- 计算两个YUV视频序列的PSNR
- YUV测试序列下载及视频序列的单帧播放工具使用
- 【Matlab】将avi视频提取出帧序列图片并保存
- yuv文件的读取
- 视频测试序列下载:YUV文件
- 视频测试序列下载:YUV文件
- 关于YUV视频的读取、播放,保存帧图片、以及处理的图像保存为YUV视频。
- system verilog与c语言接口读取yuv图像序列
- YUV Video Sequences (YUV视频序列网址)
- YUV Video Sequences (YUV视频序列网址)
- YUV Video Sequences (YUV视频序列网址)
- 标准视频测试序列网址,包括YUV
- yuv视频的播放
- YUV 测试序列收集
- YUV 测试序列
- Python读取YUV文件,并显示
- CGLib介绍
- 03_java web之servlet
- 单向链表的反转
- 小议C++中函数的参数的传递
- Linux关于GNUPLOT的使用技巧
- C间隔帧读取yuv视频序列并将提取出的帧序列组成新的yuv文件
- Error: variable 'QApplication app' has initializer but incomplete type
- 给我很大帮助的文章
- URL正则替换
- Andorid onKeyDown 老是按键没反应
- Oracle plsql 打包
- 常用的android弹出对话框
- javascript小技巧
- 编写高质量的Objective-C代码