2 shiluodewanyue shiluodewanyue 于 2016.05.05 20:54 提问

我想能够剪任意几秒钟到另一个avi文件中!

用c++编写一个剪切AVI文件的程序,请大神帮我补充我不会的剪切函数!
#include
#include
#include
#include
using namespace std;
//=======================================basic files===============================================//
class VCD
{
private:char f_name,BUFFER[512];
int hour,min,sec,s_hour,s_min,s_sec,e_hour,e_min,e_sec;
long int time,s_time,e_time,factor; //factor是每秒读出的长度
long double m_factor,i;
public: void input(); //输入要截的视频、总时间、开始时间、结束时间
void calculator(); //计算要截的时间及长度
void check(); //基本检查
void cutter(); //剪切函数
};
//=======================================member function===========================================//
void VCD::input()
{
cout<<"\n 欢迎使用 ";
cout<<"\n 本程序适用于截取
.avi和*.dat文件 \n";
cout<<"\n输入要截取的文件全路径:";
cin>>f_name; //从标准输入读包括空格在内的字符

cout<<"\n输入文件的总时间(时 分 秒):";
cin>>hour>>min>>sec;
cout<<"\n输入要截取的开始时间(时 分 秒):";
cin>>s_hour>>s_min>>s_sec;
cout<<"\n输入要截取的结束时间(时 分 秒):";
cin>>e_hour>>e_min>>e_sec;

}
//-------------------------------------------------
void VCD::calculator()
{
ifstream infile(f_name,ios::in|ios::binary);
infile.open(f_name,ios::in|ios::binary); //为输入或二进制模式打开文件
//q=infile.tellg(); //获得文件流当前位置

if(!infile)         //( f_name是文件路径,后面是只读和用二进制打开文件)
{
    perror("");     //打印系统错误信息
    cout<<"\n 按任意键退出......";
    cin.get();      //取字符
    exit(0);
} 
time=sec+(min*60)+(hour*60*60);         //文件的总时间
factor=infile.gcount()/time;            //返回二进制输入操作中最新读取的字符数
s_time=(s_hour*60*60)+(s_min*60)+s_sec; //开始时间
e_time=e_sec+(e_min*60)+(e_hour*60*60); //结束时间
cout<<" 每秒读出长度:"<<factor<<endl;
cout<<" 最新读取的文件长度:"<<infile.gcount()<<endl;   //返回二进制输入操作中最新读取的字符数
infile.close();                        //关闭文件

}
//------------------------------------------------
void VCD::check() //检查输入时间问题
{
if(hour {
cout cin.get();
exit(0);
}
if(e_time>time||s_time>e_time||s_time==e_time)
{
cout<<"\n 输入的时间错误...\n按任意键退出...";
cin.get();
exit(0);
}
if(hour>=12||min>=60||sec>=60||e_hour>=12||e_min>=60||e_sec>=60||s_hour>=12||s_min>=60||s_sec>=60)
{
cout<<"\n 输入的时间错误...\n按任意键退出...";
cin.get();
exit(0);
}
};
//---------------------------------------------------
void VCD::cutter() //剪接函数
{
long int m_factor;
ifstream infile(f_name,ios::ios||ios::binary); //打开名为f_name的文件
m_factor=infile.gcount()/512; //计算扇区数

}
//===========================================MAIN FUNCTION========================================================//
int main()
{
VCD file;

file.input(); //输入要截的视频、总时间、开始时间、结束时间
file.calculator(); //计算要截的时间长度
file.check(); //基本输入时间检查
file.cutter(); //剪接函数
cin.get();
return 0;
}

2个回答

caozhy
caozhy   Ds   Rxr 2016.05.06 06:53
shiluodewanyue
shiluodewanyue   2016.05.05 21:50

求大神花几分钟帮我写写,我已经想了很久了

Csdn user default icon
上传中...
上传图片
插入图片