• imos 学习笔记四 录像 c#


    录像
     /// <summary>
            /// 单个通道的录像
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void tsButtonRecord_Click(object sender, EventArgs e)
            {
                UInt32 ulRet = 0;
                //检查用户登录状态
                if(null == m_player.m_mainForm)
                {
                    MessageBox.Show("请先登录!");
                    return;
                }
                //当前选中的用户控制面板
                selectedSubCtrl = m_player.m_mainForm.g_userCtrlList[m_player.m_mainForm.tabControl1.SelectedIndex];
                //当前选中的播放通道
                PlayerPanel selectedPanel = selectedSubCtrl.imosPlayer.m_playerUnit[PlayerPanel.SelectedIndex];


                if (false == m_bIsRecord)//未处于录像过程中
                {
                    if (null != LocalConfig.vodDownloadLoc)//设置录像的保存位置
                    {
                        ConfigClass.OptionSetting.RecordPath = LocalConfig.vodDownloadLoc;
                    }
                    if(null != selectedPanel.channelCode)
                    {
                        //开始录像 
                        ulRet = IMOSSDK.IMOS_StartRecord(ref selectedSubCtrl.sdkManager.stLoginInfo.stUserLoginIDInfo,//用户登录信息
                            Encoding.Default.GetBytes(selectedPanel.channelCode),//播放通道号
                        Encoding.Default.GetBytes(ConfigClass.OptionSetting.RecordPath),//录像文件存放路径
                        0);//录像文件的格式
                    }
                    
                    if (0 != ulRet)
                    {
                        log.Info("本地录像失败,错误码为:" + ulRet.ToString());
                        MessageBox.Show("本地录像失败,错误码为:" + ulRet.ToString());
                    }
                    else
                    {
                        m_bIsRecord = true;
                        tsButtonRecord.ToolTipText = "停止录像";
                    }
                }


                else
                {
                    if(null != selectedPanel.channelCode)//当前播放通道不为空
                    {
                        //停止录像
                        ulRet = IMOSSDK.IMOS_StopRecord(ref selectedSubCtrl.sdkManager.stLoginInfo.stUserLoginIDInfo,//用户标识信息
                            Encoding.Default.GetBytes(selectedPanel.channelCode));//播放通道编码
                    }
                    
                    if (0 != ulRet)
                    {
                        log.Info("停止本地录像失败,错误码为:" + ulRet.ToString());
                        MessageBox.Show("停止本地录像失败,错误码为:" + ulRet.ToString());
                    }
                    else
                    {
                        m_bIsRecord = false;
                        tsButtonRecord.ToolTipText = "开始录像";
                        MessageBox.Show("本地录像保存成功!录像保存在" + ConfigClass.OptionSetting.RecordPath);
                    }
                }
               
            }


    调用sdk中的方法
    /// <summary>
            /// 开始录像,录像文件名由播放器生成
            /// </summary>
            /// <param name="stUserLoginInfo">用户标识</param>
            /// <param name="szChannelCode">播放通道号</param>
            /// <param name="szFileName">文件存放路径(不包含文件名,且路径不带斜杠)</param>
            /// <param name="ulFileFormat">录像文件的格式</param>
            /// <returns></returns>
            [DllImport("xp_frame.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
            public static extern UInt32 IMOS_StartRecord(ref USER_LOGIN_ID_INFO_S stUserLoginInfo, byte[] szChannelCode,  byte[] szFileName, UInt32 ulFileFormat);


            /// <summary>
            /// 开始录像,录像文件名由用户指定
            /// </summary>
            /// <param name="stUserLoginInfo">用户标识</param>
            /// <param name="szChannelCode">播放通道编码</param>
            /// <param name="szFileName">要保存的录像文件名(不带扩展名)</param>
            /// <param name="ulFileFormat">录像文件的格式</param>
            /// <param name="ptrFilePostfix">存放录像文件后缀的指针</param>
            /// <returns></returns>
            [DllImport("xp_frame.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
            public static extern UInt32 IMOS_StartRecordEx(ref USER_LOGIN_ID_INFO_S stUserLoginInfo, byte[] szChannelCode,  byte[] szFileName, UInt32 ulFileFormat, IntPtr ptrFilePostfix);


            /// <summary>
            /// 停止录象
            /// </summary>
            /// <param name="stUserLoginInfo">用户标识</param>
            /// <param name="szChannelCode">播放通道号</param>
            /// <returns></returns>
            [DllImport("xp_frame.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
            public static extern UInt32 IMOS_StopRecord(ref USER_LOGIN_ID_INFO_S stUserLoginInfo, byte[] szChannelCode);
  • 相关阅读:
    在C#中使用官方驱动操作MongoDB
    【C#设计模式-抽象工厂模式】
    【MongoDB-MongoVUE图像管理工具】
    【MongoDB-query查询条件】
    【MongoDB学习-安装流程】
    【MongoDB学习-在.NET中的简单操作】
    【MongoDB】2.可视化工具的安装和使用
    越狱Season 1-Episode 12:Odd Man Out
    越狱Season 1-Episode 11: And Then There Were 7-M
    越狱Season 1-Episode 10: Sleight of Hand
  • 原文地址:https://www.cnblogs.com/retacn-yue/p/6194221.html
Copyright © 2020-2023  润新知