Example #1
0
        private void Btn_Play_Click(object sender, EventArgs e)
        {
            var isPlay = (sender as Button).Text == "播放";

            if (isPlay)
            {
                int ret       = -1;
                var streamURI = string.IsNullOrEmpty(StreamURI.Text) ? "rtsp://*****:*****@192.168.90.32:554/h264/ch1/main/av_stream" : StreamURI.Text;
                EASY_CHANNEL_SOURCE_TYPE_ENUM sourceType = GetSourceTypeByStreamURI(streamURI);
                bool overtcpType = tcpCheck.CheckState == CheckState.Checked;

                int queueSize = sourceType == EASY_CHANNEL_SOURCE_TYPE_ENUM.EASY_CHANNEL_SOURCE_TYPE_HLS ? 1024 * 1024 * 5 : 1024 * 1024 * 2;
                channelID = PlayerSDK.LibEasyPlayerPro_OpenStream(palyerHandle, sourceType, streamURI, MEDIA_TYPE.MEDIA_TYPE_VIDEO | MEDIA_TYPE.MEDIA_TYPE_AUDIO | MEDIA_TYPE.MEDIA_TYPE_EVENT, RealProCallBack, IntPtr.Zero, overTcp: overtcpType, queueSize: (uint)queueSize);

                ret = PlayerSDK.LibEasyPlayerPro_StartPlayStream(palyerHandle, channelID, this.playerPanel.Handle, renderFormat);
                //PlayerSDK.LibEasyPlayerPro_SetPlayFrameCache(palyerHandle, channelID, 6);
                if (ret == 0)
                {
                    PlayerSDK.LibEasyPlayerPro_StartPlaySound(palyerHandle, channelID);
                    this.Btn_Play.Text = "停止";
                }
            }
            else
            {
                int ret = PlayerSDK.LibEasyPlayerPro_StopPlayStream(palyerHandle, channelID);
                if (ret == 0)
                {
                    this.Btn_Play.Text = "播放";
                    channelID          = -1;
                    this.playerPanel.Refresh();
                }
            }
        }
Example #2
0
        /// <summary>
        /// 打开一路码流,返回一个可用的通道 ID
        /// </summary>
        /// <param name="playerHandle">PLAYER_HANDLE句柄.</param>
        /// <param name="channelType">通道源类型.</param>
        /// <param name="streamURI">有效的源地址.</param>
        /// <param name="mediaType">媒体类型【媒体类型 MEDIA_TYPE_VIDEO | MEDIA_TYPE_AUDIO | MEDIA_TYPE_EVENT)】 暂保留.</param>
        /// <param name="callback">回调函数.</param>
        /// <param name="userPtr">用户自定义指针.</param>
        /// <param name="reconnection">是否重连【1表示无限次重连,0表示不重连,大于1表示指定次数重连(需小于1000)】默认1.</param>
        /// <param name="queueSize">缓冲队列大小, 需大于1024*512.默认1024 * 512 * 2</param>
        /// <param name="rtpOverTcp">true 为tcp,否则为udp.默认1</param>
        /// <param name="multiplex">true:复用源,即打开同一个url时,到前端的连接只有一个;false:不复用, 打开多少个url,就有多少个连接*默认true
        /// <returns>可用的通道 ID.</returns>
        public static int LibEasyPlayerPro_OpenStream(IntPtr playerHandle, EASY_CHANNEL_SOURCE_TYPE_ENUM channelType, string streamURI, MEDIA_TYPE mediaType,
                                                      EasyPlayerProCallBack callback, IntPtr userPtr, uint reconnection = 1, uint queueSize = 1024 * 512 * 2, bool overTcp = true, bool multiplex = true)
        {
            int ret = LibEasyPlayerPro_OpenStream(playerHandle, channelType, streamURI, overTcp ? (byte)1 : (byte)0, mediaType, callback, userPtr, reconnection, 0, queueSize, multiplex ? (uint)1 : (uint)0);

            return(ret);
        }
Example #3
0
 private static extern int LibEasyPlayerPro_OpenStream(IntPtr playerHandle, EASY_CHANNEL_SOURCE_TYPE_ENUM channelType, string streamURI, byte rtpOverTcp, MEDIA_TYPE mediaType,
                                                       EasyPlayerProCallBack callback, IntPtr userPtr, uint reconnection, uint heartbeatType, uint queueSize, uint multiplex);