博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
imos 学习笔记四 录像 c#
阅读量:5096 次
发布时间:2019-06-13

本文共 3181 字,大约阅读时间需要 10 分钟。

录像
 /// <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);

转载于:https://www.cnblogs.com/retacn-yue/p/6194221.html

你可能感兴趣的文章
QT5.3 杂记(转)
查看>>
如何跟开发就测试范围进行沟通?
查看>>
js模板引擎-art-template常用总结
查看>>
jQuery中的模拟操作
查看>>
红黑树的删除压力测试和完整性检查
查看>>
Ajax 分页
查看>>
关于GreenOdoo的一个Bug
查看>>
有网络信号,但输入密码却无法连接的解决方法
查看>>
自己写的DBHelper感慨颇深
查看>>
DeferredResult使用方式和场景
查看>>
WIN XP 添加删除WINDOWS组件时,指定的系统光盘路径
查看>>
email 正则
查看>>
GIS简单计算Helper类
查看>>
PHP 把返回的数据集转换成Tree树
查看>>
布隆过滤器
查看>>
Spring 3.x MVC 入门2 -- 通过示例初步感受spring mvc
查看>>
Unique Paths 解答
查看>>
密码技术发展几十年 我们真的安全了吗?
查看>>
workerman需要的php模块posix、pcntl、sysvshm、sysvmsg缺少,怎么办
查看>>
AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle
查看>>