开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2042|回复: 6
收起左侧

[易语言] 还是摄像头压缩录制的问题

[复制链接]
结帖率:14% (3/22)
发表于 2011-10-1 22:02:40 | 显示全部楼层 |阅读模式   福建省福州市
2精币

那位大侠,帮我把底下的程序,改成e语言,最好有注解,我想用在录制摄像头时,压缩视频用,毕竟E语言这块好像很弱,网络上写的压缩录制好像都不完美,有些还有BUG,我试用时,无法压缩录制,最算录下来,也不是影音格式,无法在其他电脑上用
或者有没哪位老大开一个课 ,专门讲这方面知识的
1、视频压缩的初始化:   
  void   CplaycapDlg::InitCompressor(void)   
  {   
  memset(&m_CV,0,sizeof(COMPVARS));   
  m_CV.dwFlags=ICMF_COMPVARS_VALID;   
  m_CV.cbSize=sizeof(m_CV);   
  m_CV.cbState=0;   
  m_CV.fccHandler=mmioFOURCC('d','i','v','x');

//注:如果是调用XIVD,则上面的参数设为mmioFOURCC('x','v','i','d');  

  m_CV.fccType=ICTYPE_VIDEO;   
  m_CV.hic=ICOpen(ICTYPE_VIDEO,mmioFOURCC('d','i','v','x'),ICMODE_COMPRESS);
//注:如果是调用XIVD,则上面的参数设为mmioFOURCC('x','v','i','d');  

  m_CV.lDataRate=780;   
  m_CV.lFrame=0;   
  m_CV.lKey=15;   
  m_CV.lKeyCount=0;   
  m_CV.lpbiIn=NULL;   
  m_CV.lpBitsOut=NULL;   
  m_CV.lpBitsPrev=m_CV.lpState=NULL;   
  m_CV.lQ=ICQUALITY_DEFAULT;   
  if   (m_CV.hic!=NULL)   
  {   //获得压缩后数据的格式
  m_OutFormatSize=ICCompressGetFormatSize(m_CV.hic,&m_InInfo);   
  m_pOutInfo=(BITMAPINFO   *)new   BYTE[m_OutFormatSize];   
  ICCompressGetFormat(m_CV.hic,&m_InInfo,m_pOutInfo);   
  m_OutBufferSize=ICCompressGetSize(m_CV.hic,&m_InInfo,m_pOutInfo);
//准备编码器  
  if   (ICSeqCompressFrameStart(&m_CV,&m_InInfo))   
              AfxMessageBox("压缩初始化成功");   
  else   
              AfxMessageBox("压缩初始化失败");   
  if(ICDecompressBegin(m_CV.hic,m_pOutInfo,&m_InInfo)!=ICERR_OK)   
              AfxMessageBox("解压初始化失败!");   
  else   
              AfxMessageBox("解压初始化成功!");   
  }   
  }   
  2、VFW中视频采集中的回调函数(我用的是摄相头):   
  LRESULT   CALLBACK   CplaycapDlg::FrameCallBack(HWND   hWnd,LPVIDEOHDR   lpVHdr)   
  {   
             CplaycapDlg*   pDlg=(CplaycapDlg*)::AfxGetMainWnd();   
  pDlg->CompressFrame(lpVHdr);//压缩一帖视频数据
  return   TRUE;   
  }   
  3、视频压缩并解压   
  void   CplaycapDlg::CompressFrame(LPVIDEOHDR   lpVHdr)   
  {   
  BOOL   bKeyFrame;   
  m_OutActSize=this->m_InInfo.bmiHeader.biSizeImage;
//压缩数据
  BYTE*   Buf=(BYTE*)ICSeqCompressFrame(&m_CV,
                       0,
                       lpVHdr->lpData,
                      &bKeyFrame,
                      (long*)&m_OutActSize);   
   
  if(Buf!=NULL)   
  {   
  DWORD   Result;  
 //解压缩数据 
Result=ICDecompress(m_CV.hic,//解码器的句柄
           ICDECOMPRESS_HURRYUP,//压缩方式
           &m_InInfo.bmiHeader,//输入数据格式信息
           Buf,//输入数据缓冲区
           &m_pOutInfo->bmiHeader,//解压后数据的格式信息
           buff);//解压后的数据存入地址
  //if(Result==ICERR_OK)   
          AfxMessageBox("解压成功!");   
  //else   
      //AfxMessageBox("解压失败!");   
  CDC   *pdc=GetDC();   
  HDC   hdc=pdc->GetSafeHdc();   
  StretchDIBits(hdc,0,0,176,144,0,0,176,144,buff,&m_InInfo),DIB_RGB_COLORS,SRCCOPY);   
  }   
  }   
   


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:100% (1/1)
发表于 2011-10-1 22:42:04 | 显示全部楼层   山东省淄博市
看着有点头痛,我看不出这是易语言{:3_226:}
回复

使用道具 举报

结帖率:96% (24/25)
发表于 2011-10-1 22:53:08 | 显示全部楼层   广东省深圳市
QQ截图20111001225129.jpg

默认调用系统已经安装的解码器进行压缩.
回复

使用道具 举报

结帖率:14% (3/22)
 楼主| 发表于 2011-10-1 23:00:41 | 显示全部楼层   福建省福州市
我没说是E语言啊,这是VFW里关于视频压缩的东东,E语言的视频设备,无法压缩录制成MPEG4之类的,想让大侠看看用这个改成我需要的,也也解决E语言这方面的弱势
回复

使用道具 举报

结帖率:14% (3/22)
 楼主| 发表于 2011-10-1 23:03:18 | 显示全部楼层   福建省福州市
板凳兄,这不实用啊 ,我想用摄像头做监控录制,你不能每次都设置一次,所以我想用代码方式设置
回复

使用道具 举报

结帖率:14% (3/22)
 楼主| 发表于 2011-10-1 23:05:36 | 显示全部楼层   福建省福州市
我觉得一个完整的程序,基本设置只要一次,而不是每次使用都要设置一次,这个思路没错吧
回复

使用道具 举报

发表于 2011-10-2 01:50:02 | 显示全部楼层   广东省中山市
菜鸟路过{:3_233:}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表