Esempio n. 1
0
        private async void CheckStreaming()
        {
            await Task.Delay(2000);

            try
            {
                if (_flvDownloader == null)
                {
                    return;
                }
                if (_recordedSize <= 1)
                {
                    if (_flvDownloader.IsDownloading)
                    {
                        _flvDownloader.Stop();
                    }
                    _mw.Dispatcher.Invoke(() =>
                    {
                        _mw.LiveStatus.Content = "未直播";
                    });
                }
                else
                {
                    _mw.Dispatcher.Invoke(() =>
                    {
                        _mw.LiveStatus.Content = "正在直播";
                    });
                }
            }catch (Exception ex)
            {
                _mw.AppendLogln("ERROR", "在检查直播状态时发生未知错误:" + ex.Message);
                Stop();
            }
        }
Esempio n. 2
0
 private void CommentProvider_OnReceivedComment(object sender, ReceivedCommentArgs e)
 {
     //接收到弹幕时的处理。
     if (e.Comment.MsgType != MsgTypeEnum.LiveStart)
     {
         if (e.Comment.MsgType != MsgTypeEnum.LiveEnd)
         {
             return;
         }
         _mw.AppendLogln("INFO", "[主播结束直播]");
         _flvDownloader?.Stop();
         if (!_autoStart)
         {
             Stop();
         }
         else
         {
             _mw.Dispatcher.Invoke(() => { _mw.LiveStatus.Content = "未直播"; });
         }
     }
     else
     {
         _mw.AppendLogln("INFO", "[主播开始直播]");
         if (!_autoStart || _flvDownloader.IsDownloading)
         {
             return;
         }
         _flvDownloader.Start();
         _mw.Dispatcher.Invoke(() => { _mw.LiveStatus.Content = "正在直播"; });
     }
 }
Esempio n. 3
0
        private async void CommentProvider_OnReceivedComment(object sender, ReceivedCommentArgs e)
        {
            //接收到弹幕时的处理。
            if (e.Comment.MsgType != MsgTypeEnum.LiveStart)
            {
                if (e.Comment.MsgType != MsgTypeEnum.LiveEnd)
                {
                    return;
                }
                _mw.AppendLogln("INFO", "[主播结束直播]");
                _flvDownloader?.Stop();
                if (!_autoStart)
                {
                    Stop();
                }
                else
                {
                    _mw.Dispatcher.Invoke(() => { _mw.LiveStatus.Content = "未直播"; });
                }
            }
            else
            {
                _mw.AppendLogln("INFO", "[主播开始直播]");

                if (!_autoStart || _flvDownloader.IsDownloading)
                {
                    return;
                }
                //准备查找下载地址
                var pathFinder = new PathFinder(_mw);

                //查找真实下载地址
                try
                {
                    if (_flvRunning)
                    {
                        return;
                    }
                    _flvRunning = true;
                    _flvUrl     = await pathFinder.GetTrueUrl(_roomid);

                    _flvRunning = false;
                }
                catch
                {
                    _mw.AppendLogln("ERROR", "未取得下载地址");
                    Stop();
                    return; //停止并退出
                }

                _mw.AppendLogln("INFO", "下载地址已更新。");

                _flvDownloader.Start(_flvUrl);
                CheckStreaming();
            }
        }
Esempio n. 4
0
        private async void CheckStreaming()
        {
            await Task.Delay(2000);

            if (_recordedSize <= 1)
            {
                if (_flvDownloader.IsDownloading)
                {
                    _flvDownloader.Stop();
                }
                _mw.Dispatcher.Invoke(() =>
                {
                    _mw.LiveStatus.Content = "未直播";
                });
            }
            else
            {
                _mw.Dispatcher.Invoke(() =>
                {
                    _mw.LiveStatus.Content = "正在直播";
                });
            }
        }
Esempio n. 5
0
 public void Stop()
 {
     if (IsRunning)
     {
         IsRunning     = false;
         _recordedSize = 0;
         if (flvDownloader != null)
         {
             flvDownloader.Stop();
             flvDownloader = null;
         }
         InfoLogger.SendInfo(_roomid, "INFO", "停止");
         OnStop?.Invoke(this);
     }
     else
     {
         InfoLogger.SendInfo(_roomid, "ERROR", "已经是停止状态了");
     }
 }
Esempio n. 6
0
 public void Stop(bool isNetError = false)
 {
     if (IsRunning)
     {
         IsRunning     = false;
         _recordedSize = 0;
         if (flvDownloader != null)
         {
             flvDownloader.Stop();
             flvDownloader = null;
         }
         InfoLogger.SendInfo(_roomid, "INFO", "停止");
         OnStop?.Invoke(this, isNetError);
         _timer?.Dispose();
     }
     else
     {
         InfoLogger.SendInfo(_roomid, "ERROR", "已经是停止状态了");
     }
 }
Esempio n. 7
0
        private async void CommentProvider_OnReceivedComment(object sender, ReceivedCommentArgs e)
        {
            try
            {
                //DEBUG: 弹幕显示测试
                _mw.AppendLogln("收到弹幕", e.Comment.CommentUser + ": " + e.Comment.CommentText);
                //接收到弹幕时的处理。
                if (e.Comment.MsgType != MsgTypeEnum.LiveStart)
                {
                    if (e.Comment.MsgType != MsgTypeEnum.LiveEnd)
                    {
                        return;
                    }
                    _mw.AppendLogln("INFO", "[主播结束直播]");
                    _flvDownloader?.Stop();
                    if (!_autoStart)
                    {
                        Stop();
                    }
                    else
                    {
                        _mw.Dispatcher.Invoke(() => { _mw.LiveStatus.Content = "未直播"; });
                    }
                }
                else
                {
                    _mw.AppendLogln("INFO", "[主播开始直播]");

                    if (!_autoStart || _flvDownloader.IsDownloading)
                    {
                        return;
                    }
                    //准备查找下载地址
                    var pathFinder = new PathFinder(_mw);

                    //查找真实下载地址
                    try
                    {
                        if (_flvRunning)
                        {
                            return;
                        }
                        _flvRunning = true;
                        _flvUrl     = await pathFinder.GetTrueUrl(_roomid);

                        _flvRunning = false;
                    }
                    catch
                    {
                        _mw.AppendLogln("ERROR", "未取得下载地址");
                        Stop();
                        return; //停止并退出
                    }

                    _mw.AppendLogln("INFO", "下载地址已更新。");

                    try
                    {
                        _flvDownloader.Start(_flvUrl);
                    }
                    catch (Exception exception)
                    {
                        _mw.AppendLogln("ERROR", "下载视频流时出错:" + exception.Message);
                        Stop();
                    }

                    CheckStreaming();
                }
            }catch (Exception ex)
            {
                _mw.AppendLogln("ERROR", "在收取弹幕时发生未知错误:" + ex.Message);
                Stop();
            }
        }