zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    [排序算法] 选择排序(2种)
    [排序算法] 交换排序(2种)
    针对Oracle表 列字段的增加、删除、修改以及重命名操作sql
    myelcipse中SVN进行代码更新和提交
    SVN服务器的搭建
    无法变更启动序列号
    mybatis入门学习记录(一)
    java中判断两个字符串是否相等的问题
    xshell如何同时打开多个标签
    设计模式(六) xml方式实现AOP
  • 原文地址:https://www.cnblogs.com/retacn-yue/p/6194221.html
Copyright © 2011-2022 走看看