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(); } }
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 = "正在直播"; }); } }
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(); } }
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 = "正在直播"; }); } }
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", "已经是停止状态了"); } }
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", "已经是停止状态了"); } }
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(); } }