WEB开发网
开发学院软件开发C语言 C# 视频监控系列(12):H264播放器——播放录像文... 阅读

C# 视频监控系列(12):H264播放器——播放录像文件

 2009-04-08 08:23:32 来源:WEB开发网   
核心提示:先来一张简单的效果图以下几个VC++ 代码片段:CPlayerDlg::OnInitDialog()Hik_PlayM4_SetVolume(PORT,m_SoundSlider.GetPos());//其他代码//setthecapturepicturecallbackfunction;Hik_PlayM4_SetD

先来一张简单的效果图

C# 视频监控系列(12):H264播放器——播放录像文件

以下几个VC++ 代码片段:

          CPlayerDlg::OnInitDialog()

    Hik_PlayM4_SetVolume(PORT,m_SoundSlider.GetPos());

    //C# 视频监控系列(12):H264播放器——播放录像文件 其他代码

    //set the capture picture call back function;
    Hik_PlayM4_SetDisplayCallBack(PORT,DisplayCBFun);
    //set the wave audio call back funtion;
    Hik_PlayM4_SetAudioCallBack(PORT,WaveCBFun, (long)this);

    //C# 视频监控系列(12):H264播放器——播放录像文件 其他代码

    Hik_PlayM4_SetEncTypeChangeCallBack(PORT,funEncChange,(long)this);
#if (WINVER > 0x0400)
    //If do not support multi monitor,may not call!
    Hik_PlayM4_InitDDrawDevice();
    Hik_PlayM4_SetDDrawDevice(PORT,0);
#endif
    //Test adapter Capability;
    TestCapability(0);
    Hik_PlayM4_SetFileEndMsg(PORT,m_hWnd,WM_FILE_END);
    Hik_PlayM4_SetEncChangeMsg(PORT,m_hWnd,WM_ENC_CHANGE);
    if(m_strPlayFileName.Compare(""))
    {
        if(m_bStreamType)
            OpenStream();
        else
            OpenFile();
    }
  

          CPlayerDlg::OpenFile()

    Hik_PlayM4_SetFileRefCallBack(PORT,FileRefDone,(DWORD)this);
    Hik_PlayM4_SetVerifyCallBack(PORT, 0, 0xffffffff, VerifyFun, (DWORD) this);// verify the whole file;
    if(!Hik_PlayM4_OpenFile(PORT,m_strPlayFileName.GetBuffer(m_strPlayFileName.GetLength())))
    {
        m_strPlayFileName="";
        CString csError;
        csError.Format("Open file failed(%d)",Hik_PlayM4_GetLastError(PORT));
        MessageBox(csError);
        return ;
    }
    SetOpenState();
    m_nMaxFileTime=Hik_PlayM4_GetFileTime(PORT);
    if(!m_nMaxFileTime)
    {
        MessageBox("File seconds is zero");
        return;
    }
    m_nTotalHour=m_nMaxFileTime/3600;
    m_nTotalMinute=(m_nMaxFileTime%3600)/60;
    m_nTotalSecond=m_nMaxFileTime%60;
    m_nTotalFrames=Hik_PlayM4_GetFileTotalFrames(PORT);
    numFrames=m_nTotalFrames;
    //If you want to change the display buffer. Do hear!
    //Hik_PlayM4_SetDisplayBuf(PORT,25);
    Play();

          CPlayerDlg::Play()

    OnThrow0();
//#ifdef _TEST_CALLBACK
    if(m_bConvert)       
       Hik_PlayM4_SetDecCallBack(PORT,DecCBFun);
    else
        m_pMainMenu->EnableMenuItem(ID_FILE_CLOSE, FALSE);
//#endif
    if(m_bPlaying)
    {
        Hik_PlayM4_Play(PORT,GetDlgItem(IDC_SHOW)->m_hWnd);
    }
    else
    {
        if(m_bStreamType)
        {
            ::SetFilePointer(m_hStreamFile,m_nHeadSize,0,FILE_BEGIN);
            Hik_PlayM4_ResetSourceBuffer(PORT);
            SetEvent(m_hEventInput);
        }
        m_bPlaying = Hik_PlayM4_Play(PORT,GetDlgItem(IDC_SHOW)->m_hWnd);
        m_bSound=Hik_PlayM4_PlaySound(PORT);
        if(m_bPlaying)
            SetTimer(PLAY_TIMER,500,NULL);
        
    }

          CPlayerDlg::SetOpenState()

    Hik_PlayM4_GetPictureSize(PORT,&m_nWidth,&m_nHeight);

    Hik_PlayM4_SetOverlayMode(PORT,TRUE,RGB(255,0,255));

1 2  下一页

Tags:视频监控 系列 播放器

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接