当前位置: 首页 > news >正文

信息聚合网站怎么做电子商务网站建设步骤一般为

信息聚合网站怎么做,电子商务网站建设步骤一般为,小程序是做什么的,青岛网站制作流程首先在阅读本代码之前百度一下avi#xff0c;虽然经过我验证上面有部分错误#xff0c;但是不影响阅读。因为有些变量的注释我没有写#xff0c;所以请读者自行搜索吧。下面是c语言文件#xff0c;编译之后能够直接运行#xff0c;用来截取开始时间#xff08;单位s…首先在阅读本代码之前百度一下avi虽然经过我验证上面有部分错误但是不影响阅读。因为有些变量的注释我没有写所以请读者自行搜索吧。下面是c语言文件编译之后能够直接运行用来截取开始时间单位s后指定长度单位s的视频流。最后附上一部分视频文件的二进制方便对照阅读。 #include stdio.h #include stdlib.h #include sys/types.h #include sys/stat.h #include unistd.h #include fcntl.h #include string.h #pragma pack(1) /* 最开始的4个字节是一个四字符码‘RIFF’表示这是一个RIFF文件紧跟着后面用4个字节表示此RIFF文件的大小 然后又是一个四字符码说明文件的具体类型比如AVI、WAVE等最后就是实际的数据。注意文件大小值的计算 方法为实际数据长度 4文件类型域的大小也就是说文件大小的值不包括‘RIFF’域和“文件大小”域本身 的大小。 */ typedef struct RIFF { char riff[4]; unsigned int size; char type[4]; }RIFF; /* 注意listSize值的计算方法为实际的列表数据长度 4listType域的大小也就是说listSize值不包括‘LIST’域和listSize域本身的大小。 */ typedef struct list { char fcc[4]; unsigned int size; char type[4]; }LIST; /*************avih*********************/ typedef struct _avimainheader { char fcc[4];//avih int size;// 本数据结构的大小不包括最初的8个字节fcc和cb两个域 int dwMicroSecPerFrame;//视频帧间隔时间以微秒为单位 int dwMaxBytesPerSec;// 这个AVI文件的最大数据率 int dwPaddingGranularity;// 数据填充的粒度 int dwFlags;// AVI文件的全局标记比如是否含有索引块等 int dwTotalFrames; // 总帧数 int dwInitialFrames; // 为交互格式指定初始帧数非交互格式应该指定为0 int dwStreams;// 本文件包含的流的个数 int dwSuggestedBufferSize; // 建议读取本文件的缓存大小应能容纳最大的块 int dwWidth;//视频图像的宽以像素为单位 int dwHeight;//视频图像的高以像素为单位 int dwReserved[4]; // 保留 }AVIMAINHEADER; /********strh*******/ typedef struct { short int left; short int top; short int right; short int bottom; }RCFRAME; typedef struct _avistreamheader { char fcc[4];// 必须为‘strh’ int size; char fccType[4];// 流的类型‘auds’音频流、‘vids’视频流、 char fccHandler[4];// 指定流的处理者对于音视频来说就是解码器 int  dwFlags;// 标记是否允许这个流输出调色板是否变化 int wPriority;// 流的优先级当有多个相同类型的流时优先级最高的为默认流 int wLanguage; int dwInitialFrames; // 为交互格式指定初始帧数 int dwScale;// 这个流使用的时间尺度 int dwRate; int dwStart;// 流的开始时间 int dwLength;// 流的长度单位与dwScale和dwRate的定义有关 int dwQuality;// 流数据的质量指标0 ~ 10,000 int dwSampleSize;// Sample的大小 RCFRAME rcFrame;// 指定这个流视频流或文字流在视频主窗口中的显示位置 }AVISTREAMHEADER; /**************strf_vids********************/ typedef struct tagBITMAPINFOHEADER { char fcc[4]; int biSize; int biWidth; int biHeight; short int biPlanes; short int biBitCount; int biCompression; int biSizeImage; int biXPelsPerMeter; int biYPelsPerMeter; int biClrUsed; int biClrImportant; }BITMAPINFOHEADER; typedef struct tagBITMAPINFO { BITMAPINFOHEADER bmiHeader; int  bimColors[1]; }BITMAPINFO; /***************strf_auds*********************/ //#define WAVEFORMAT __attribute__((packed)) typedef struct { char fcc[4]; int size; short int wFormatTag; short int nChannels; int nSamplesPerSec; int nAvgBytesPerSec; short int nBlockAlign; short int wBitsPerSample; short int biSize; }WAVEFORMAT; typedef struct strl_vids { LIST list; AVISTREAMHEADER strh; BITMAPINFO strf; }STRL_VIDS; typedef struct strl_auds { LIST list; AVISTREAMHEADER strh; WAVEFORMAT strf; }STRL_AUDS; typedef struct junk { char fcc[4]; int size; }JUNK; typedef struct HDRL { AVIMAINHEADER avih; STRL_VIDS strl_vids; STRL_AUDS strl_auds; JUNK junk; }HDRL; typedef struct movi { char id[4]; int length; }MOVI; typedef struct data { LIST list; MOVI chunk; }DATA; typedef struct aindex { char dwChunkId[4]; int dwFlags; int dwOffset; int dwSize; }AINDEX; typedef struct avi_idxl { char fcc[4]; AINDEX aindex[10]; }AVI_IDXL; void print_avihead(RIFF riff,LIST list,HDRL hdrl) {     printf(riff.size%d\n,riff.size); printf(list.size%d\n,list.size); printf(hdrl.avih.fcc%s\n,hdrl.avih.fcc); printf(hdrl.avih.dwTotalFrames%d\n,hdrl.avih.dwTotalFrames); printf(hdrl.avih.dwMicroSecPerFrame%dms\n,hdrl.avih.dwMicroSecPerFrame/1000); printf(hdrl.strl_vids.strh.fcc%s\n,hdrl.strl_vids.strh.fcc); printf(hdrl.strl_auds.strh.fcc%s\n,hdrl.strl_auds.strh.fcc); printf(hdrl.junk.fcc%c\n,hdrl.junk.fcc[3]); printf(hdrl.junk.size%d\n,hdrl.junk.size); } void get_aviidxl(AVI_IDXL*idxl,char*src_buf,int off_set) { char*p; psrc_bufoff_set; memcpy(idxl,p,sizeof(AVI_IDXL)); printf(idxl.fcc:%s\n,idxl-fcc); } long get_file_size(const char *path) { unsigned long filesize -1; FILE*fp; fp fopen(path,r); if(fpNULL) { return filesize; } fseek(fp,0,SEEK_END); filesize ftell(fp); fclose(fp); return filesize; } int main(int argc ,char*argv[]) { unsigned long size; int count0,i; int begin_s60;//开始时间s int t_s20;//截取间隔s int fd_src,fd_dst; int off_set; char*buf,*readbuf; char*src_buf,*tmp; RIFF riff; LIST lhdrl; HDRL hdrl; LIST lmovi; MOVI movi; /*******************打开源文件与目的文件*****************************/ fd_src open(H264.avi,O_RDONLY); fd_dst open(out.avi,O_CREAT|O_RDWR,0777); /************将源文件内容读入缓存区***********************/ lseek(fd_src,0,SEEK_SET); read(fd_src,riff,sizeof(riff)); read(fd_src,lhdrl,sizeof(lhdrl)); read(fd_src,hdrl,lhdrl.size4); //    print_avihead(riff,lhdrl,hdrl); /*********建立JUNK缓存区存储0************/ bufmalloc(hdrl.junk.size); memset(buf,0,hdrl.junk.size); /**********将文件头与JUNK区写入目标文件***********/ lseek(fd_dst,sizeof(riff),SEEK_CUR); lseek(fd_dst,sizeof(lhdrl),SEEK_CUR); lseek(fd_dst,sizeof(hdrl),SEEK_CUR); //write(fd_dst,riff,sizeof(riff)); //write(fd_dst,list,sizeof(list)); //write(fd_dst,hdrl,sizeof(hdrl)); write(fd_dst,buf,hdrl.junk.size); free(buf); /***********偏移至movi区获取实际数据***************/ lseek(fd_src,hdrl.junk.size,SEEK_CUR); read(fd_src,lmovi,sizeof(lmovi)); write(fd_dst,lmovi,sizeof(lmovi)); /******写数据*****/ while(1)//for(i 0 ;i 20;i) { read(fd_src,movi,sizeof(movi)); if(movi.length%2!0) { movi.length1; } buf malloc(movi.length); read(fd_src,buf,movi.length); //         printf(%d\tmovi.id%s\n,count,movi.id);  if(((strncmp(movi.id2,db,2)0)||(strncmp(movi.id2,dc,2)0))(countbegin_s*25))//25帧是1秒 { free(buf); count; //    printf(%d\tmovi.id%s\n,count,movi.id);  continue; } if(((strncmp(movi.id2,pc,2)0)||(strncmp(movi.id2,wb,2)0))((count-1)begin_s*25))//音频帧不计算在内时间只用视频帧计算 { free(buf); continue; } if(((strncmp(movi.id2,db,2)0)||(strncmp(movi.id2,dc,2)0))(countbegin_s*25)) { count; printf(%d\tmovi.id%s\tmovi.size%x\n,count,movi.id,movi.length);     } write(fd_dst,movi,sizeof(movi)); write(fd_dst,buf,movi.length); sizesizemovi.length8;  free(buf);  if(count(begin_st_s)*25) { break; } //free(buf); //sizesizemovi.length8; } riff.size1212lhdrl.size4hdrl.junk.size12size;//计算数据大小用来填充报头 hdrl.avih.dwTotalFramescount;//大小字节 lseek(fd_dst,0,SEEK_SET); write(fd_dst,riff,sizeof(riff)); write(fd_dst,lhdrl,sizeof(lhdrl)); write(fd_dst,hdrl,sizeof(hdrl)); //    off_setoff_set8data.list.size; //    get_aviidxl(idxl,src_buf,off_set); //    write(fd_dst,src_buf,size); close(fd_src); close(fd_dst); }   报头的图片 中间是JUNK的填充 这是一部分数据都不到一帧所以最好自己找个avi文件对照的我的代码看。 ———————————————— 版权声明本文为CSDN博主「天晓-workspace」的原创文章遵循CC 4.0 BY-SA版权协议转载请附上原文出处链接及本声明。 原文链接https://blog.csdn.net/weixin_38697824/article/details/85341049
http://www.pierceye.com/news/664406/

相关文章:

  • 儿童摄影网站建设专业做网站制作自助建站系统
  • 注册做网站的公司有哪些wordpress 4.1 下载
  • 用ps做美食网站一个网站多少钱?
  • 网站建设 试题揭阳专业做网站公司
  • 手机上怎么创建自己的网站河南企业网站优化
  • 定陶区城乡和住房建设局网站新手怎么做网站
  • 工商银行与建设银行网站对比石嘴山网站seo
  • seo快速建站自学程序员的步骤
  • 做旅行网站的依据及意义如何制作自己想要的图片
  • 电子商务网站怎么做网站建设企业建站哪家好?来这里看看
  • 网站备案电话号码购物商城网站建设方案
  • 手机商城系统徐州seo计费管理
  • 西安网站公司哪家好信息推广的方式有哪些
  • 网站开发注意的事项商丘网站制作软件
  • 51zwd一起做网站广州广东省网站备案查询
  • 如何生成一个网站自己弄公司网站
  • 企业信用信息查询网官网孝感网站seo
  • 中淼建设工程有限公司网站分类用wordpress
  • 腾讯建设网站首页做销售网站
  • 推广引流网站聚名网注册
  • 原来做网站后来跑国外了多伦多网站建设多少钱
  • 手机建站平台做母婴网站设计思路
  • 免费个人手机网站九八智能建站
  • 中山网站备案如何做购物网站
  • 常见的简单的网站制作建设网站的好公司
  • 邯郸网站制作建设wordpress+怎么迁移
  • 设计创意广告上海企业网站优化
  • 自己做网站需要购买服务器吗WordPress文章相册修改
  • 校园招聘哪个网站做的好学做川菜网站
  • 大足网站建设公司医院网站建设熊掌号