C++远程监控系统发送端-实现对视频采集卡传递进来的数据流的处理

//回调函数,实现对视频采集卡传递进来的数据流的处理
WORD CALLBACK _loadds MyCallBack(HDRVR hdrvr, UINT msg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2)
{

    if(msg==VF_MSGUSER_BUF_WRITE)
    {
        LONG lRet;
        MMIOINFO    mmioinfoIn;
        LPVF_BUFWRITE_STRUCT lpBufWrite = (LPVF_BUFWRITE_STRUCT)dwParam1;
        
        //将传递进来的数据压入视频流缓冲区队列
        if (g_pBuffer)
            DWORD dwBytes = g_pBuffer->PushIn((LPSTR)lpBufWrite -> lpBuffer, (DWORD)lpBufWrite -> dwBufferWrite);
        //如果现在在采集数据,将数据写入到采集文件中
        if (m_Capture)
            if(hmmioOutput)
            {
                lRet = mmioWrite(hmmioOutput, (LPSTR)lpBufWrite -> lpBuffer, (LONG)lpBufWrite -> dwBufferWrite);
                mmioGetInfo(hmmioOutput,&mmioinfoIn, 0);
                //采集文件满,发送停止采集消息
                if(mmioinfoIn.lDiskOffset>(m_size*1024*1024))
                    ::SendMessage(hWnd,WM_CAPTURE_STOP,0,0);        
            }
            if (lRet == -1L)
                return (FALSE);
            
    }
    return 1;
}
int CPlayView::InitDriver()
{
    WORD flags;
    //打开设备驱动
    m_hVFDrv = OpenDriver (L"av8api.dll", NULL, NULL);
    if (!m_hVFDrv)
    {
        MessageBox("Can't OpenDriver()");
        return -1;
    }
    //检查是否有设备驱动可用,如有,将打开的设备与驱动程序关联起来
    if (!HVFAssign(m_hVFDrv, 0))
    {
        MessageBox("没有合适的视频设备!");
        return -1;
    }
    //锁定设备
    HVFLock(m_hVFDrv, VF_CAP_ALL);
    
    flags = VF_FLAG_MPEG | VF_FLAG_ENCODE | VF_FLAG_OUTBUF;
    //打开流数据
    m_bStream = static_cast<BYTE> (HVFOpen(m_hVFDrv, flags,
        reinterpret_cast<unsigned long>(MyCallBack)));
    //配置流数据的编码信息
       InitEncodeVideoVxD();
    InitEncodeAudioVxD();
    //开始采集数据
    if (m_bStream)
        HVFRecord(m_hVFDrv, m_bStream, NULL, NULL);
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

D20187

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值