yuv文件合并器

        出于实验需要而网上苦于没找到,写了个yuv文件合成器,可以将多个yuv视频序列合并成一个,本人这么做主要目的

是构造带有场景切换的视频流,程序是给予linux平台的,虽然当中有几个函数没有进行异常处理,但是应该还是可以满足

一般需求,现将代码粘贴如下:

// 本程序可将yuv 的两个视频合为一个文件,从而建立带有场景切换的视频序列 #include #include #include #include #include #include #define BFSIZE 4096 int main(int argc,char *argv[]) { //只可以将两个视频文件合并,并将合并的文件保存在argv[3]中 if(argc!=4) { perror("error:the number of parameters/n"); return -1; } //创建新文件,用以存储合并后的视频序列 int newfd; newfd=creat(argv[3],0644); if(newfd==-1) { perror("creat"); return -1; } //打开需要合并的文件进行读取 int oldfd1,oldfd2; oldfd1=open(argv[1],O_RDONLY); if(oldfd1==-1) { perror("open argv[1]"); return -1; } oldfd2=open(argv[2],O_RDONLY); if(oldfd2==-1) { perror("open argv[2]"); return -1; } //**************************************************************** //读取文件,并将读取的数据存入到新文件argv[3]中 char buffer[BFSIZE]; //读取文件1,将文件1的数据存储到新文件中 ssize_t ret; while(1) { ret=read(oldfd1,buffer,BFSIZE); if(ret==0) break; else { write(newfd,buffer,ret); } } int re_value; re_value=close(oldfd1); if(re_value) { perror("close file1"); return -1; } //读取文件2,将文件2的数据存储到新文件中 while(1) { ret=read(oldfd2,buffer,BFSIZE); if(ret==0) break; else { write(newfd,buffer,ret); } } re_value=close(oldfd2); if(re_value) { perror("close file2"); return -1; } //**************************************************************** re_value=close(newfd); if(re_value) { perror("close newfile"); return -1; } return 0; } 

你可能感兴趣的:(图像视频处理,linux系统管理,buffer,存储,file,linux,平台)