// 本程序可将yuv 的两个视频合为一个文件,从而建立带有场景切换的视频序列
#include <stdio.h>
#include <Windows.h>
#include <stdlib.h>
#include <memory.h>
#include <string>
#define FOPEN(fHandle,filename,mode) fopen_s(&fHandle, filename, mode)
#define BFSIZE 1024
int main(int argc,char *argv[])
{
//创建新文件,用以存储合并后的视频序列
FILE *newfd, *oldfd1, *oldfd2;
FOPEN(newfd, "E:/MyVideo/amfy.yuv", "ab+");
if(newfd == NULL)
{
printf("open newfd failed ! \n");
return -1;
}
//打开需要合并的文件进行读取
FOPEN(oldfd1, "E:/MyVideo/amfy_0.yuv", "rb");
if(oldfd1 == NULL)
{
printf("open oldfd1 failed ! \n");
return -1;
}
FOPEN(oldfd2, "E:/MyVideo/amfy_1.yuv", "rb");
if(oldfd2 == NULL)
{
printf("open oldfd2 failed ! \n");
return -1;
}
//****************************************************************
//char buffer[BFSIZE];
//memset(buffer, 0, sizeof(BFSIZE));
//读取文件1,将文件1的数据存储到新文件中
int ret = 0;
int re_value = 0;
while(1)
{
char buffer1[BFSIZE] = {0};
ret = fread(buffer1, 1, BFSIZE, oldfd1);
if(ret == 0)
break;
else
{
fwrite(buffer1, 1, ret, newfd);
}
}
re_value = fclose(oldfd1);
if(re_value)
{
printf("close file1. \n");
return -1;
}
//读取文件2,将文件2的数据存储到新文件中
while(1)
{
char buffer2[BFSIZE] = {0};
ret = fread(buffer2, 1, BFSIZE, oldfd2);
if(ret == 0)
break;
else
{
fwrite(buffer2, 1, ret, newfd);
}
}
re_value = fclose(oldfd2);
if(re_value)
{
printf("close file2. \n");
return -1;
}
//****************************************************************
re_value = fclose(newfd);
if(re_value)
{
printf("close newfile. \n");
return -1;
}
return 0;
}
VS2012上实现YUV文件的拼接
需积分: 9 130 浏览量
2017-12-19
22:15:06
上传
评论
收藏 11.19MB ZIP 举报
Number.Nine
- 粉丝: 89
- 资源: 5
最新资源
- MyBatis 动态 SQL:灵活而强大的查询构建器.pdf
- com.accordion.prettyo.apk
- 毕业设计:基于SSM的mysql-ssm软件bug管理系统(源码 + 数据库 + 说明文档)
- MTSQL8.0.35windows(64bit)-mysql-installer-community-8.0.35.0
- 人工智能引领音乐创作新时代之Suno AI
- Public-bicycle-usage-forecast-master.zip
- 通道处理过程模拟:从理论到实践.pdf
- 数据库第七次作业E-R图第一题
- 大厂面试真题Java语法基础面试专题及答案
- IMG20240428211124.jpg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈