shiluodewanyue 2016-05-05 12:54 采纳率: 0%
浏览 816

我想能够剪任意几秒钟到另一个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条回答 默认 最新

  • shiluodewanyue 2016-05-05 13:50
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据