BililiveRecorder / BililiveRecorder

录播姬 | mikufans 生放送录制
https://rec.danmuji.org
GNU General Public License v3.0
3.79k stars 320 forks source link

连接弹幕服务器时出错 #425

Closed chesha1 closed 1 year ago

chesha1 commented 1 year ago

Platforms

CLI - Linux

Version

v2.5.0

Description

每过几秒就提示连接弹幕服务器时出错,查看生成的xml文件,只有文件格式,没有实际弹幕内容
报错信息如下:

[10:08:23 WRN (BililiveRecorder.Core.Room)] [178033] 连接弹幕服务器时出错
    [System.Threading.Tasks.TaskCanceledException]: A task was canceled.
[10:08:24 WRN (BililiveRecorder.Core.Room)] [24022841] 连接弹幕服务器时出错
    [System.Threading.Tasks.TaskCanceledException]: A task was canceled.
[10:08:43 WRN (BililiveRecorder.Core.Room)] [24022841] 连接弹幕服务器时出错
    [System.Threading.Tasks.TaskCanceledException]: A task was canceled.
[10:09:02 WRN (BililiveRecorder.Core.Room)] [24022841] 连接弹幕服务器时出错
    [System.Threading.Tasks.TaskCanceledException]: A task was canceled.

Logs

No response

Genteure commented 1 year ago

可以发一下日志文件里的内容吗?记录的信息比 stdout 更多一些。 日志文件位置在 BililiveRecorder.Cli 同目录的 logs 文件夹里,日志文件名是日期。

从这个来看是连接弹幕服务器的时候请求超时了。

chesha1 commented 1 year ago

可以发一下日志文件里的内容吗?记录的信息比 stdout 更多一些。 日志文件位置在 BililiveRecorder.Cli 同目录的 logs 文件夹里,日志文件名是日期。

从这个来看是连接弹幕服务器的时候请求超时了。

日志里的报错如下:

{"@t":"2022-11-29T09:30:37.5950879Z","@mt":"连接弹幕服务器时出错","@l":"Warning","@x":"System.Threading.Tasks.TaskCanceledException: A task was canceled.\n   at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.GetHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)\n   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n   at System.Net.WebSockets.WebSocketHandle.ConnectAsync(Uri uri, CancellationToken cancellationToken, ClientWebSocketOptions options)\n   at System.Net.WebSockets.ClientWebSocket.ConnectAsyncCore(Uri uri, CancellationToken cancellationToken)\n   at BililiveRecorder.Core.Api.Danmaku.DanmakuTransportWebSocket.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken) in /home/runner/work/BililiveRecorder/BililiveRecorder/BililiveRecorder.Core/Api/Danmaku/DanmakuTransportWebSocket.cs:line 42\n   at BililiveRecorder.Core.Api.Danmaku.DanmakuClient.ConnectAsync(Int32 roomid, DanmakuTransportMode transportMode, CancellationToken cancellationToken) in /home/runner/work/BililiveRecorder/BililiveRecorder/BililiveRecorder.Core/Api/Danmaku/DanmakuClient.cs:line 95\n   at BililiveRecorder.Core.Room.<>c__DisplayClass95_0.<<StartDamakuConnection>b__0>d.MoveNext() in /home/runner/work/BililiveRecorder/BililiveRecorder/BililiveRecorder.Core/Room.cs:line 349","RoomId":25846913,"SourceContext":"BililiveRecorder.Core.Room","ProcessId":7426,"ThreadId":8,"ThreadName":".NET ThreadPool Worker","ExceptionDetail":{"Type":"System.Threading.Tasks.TaskCanceledException","HResult":-2146233029,"Message":"A task was canceled.","Source":"System.Private.CoreLib","TargetSite":"Void ThrowForNonSuccess(System.Threading.Tasks.Task)","CancellationToken":"CancellationRequested: true","Task":{"Id":1,"Status":"Canceled","CreationOptions":"RunContinuationsAsynchronously"}}}
{"@t":"2022-11-29T09:30:37.9413087Z","@mt":"连接弹幕服务器时出错","@l":"Warning","@x":"System.Threading.Tasks.TaskCanceledException: A task was canceled.\n   at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.GetHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)\n   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n   at System.Net.WebSockets.WebSocketHandle.ConnectAsync(Uri uri, CancellationToken cancellationToken, ClientWebSocketOptions options)\n   at System.Net.WebSockets.ClientWebSocket.ConnectAsyncCore(Uri uri, CancellationToken cancellationToken)\n   at BililiveRecorder.Core.Api.Danmaku.DanmakuTransportWebSocket.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken) in /home/runner/work/BililiveRecorder/BililiveRecorder/BililiveRecorder.Core/Api/Danmaku/DanmakuTransportWebSocket.cs:line 42\n   at BililiveRecorder.Core.Api.Danmaku.DanmakuClient.ConnectAsync(Int32 roomid, DanmakuTransportMode transportMode, CancellationToken cancellationToken) in /home/runner/work/BililiveRecorder/BililiveRecorder/BililiveRecorder.Core/Api/Danmaku/DanmakuClient.cs:line 95\n   at BililiveRecorder.Core.Room.<>c__DisplayClass95_0.<<StartDamakuConnection>b__0>d.MoveNext() in /home/runner/work/BililiveRecorder/BililiveRecorder/BililiveRecorder.Core/Room.cs:line 349","RoomId":178033,"SourceContext":"BililiveRecorder.Core.Room","ProcessId":7426,"ThreadId":6,"ThreadName":".NET ThreadPool Worker","ExceptionDetail":{"Type":"System.Threading.Tasks.TaskCanceledException","HResult":-2146233029,"Message":"A task was canceled.","Source":"System.Private.CoreLib","TargetSite":"Void ThrowForNonSuccess(System.Threading.Tasks.Task)","CancellationToken":"CancellationRequested: true","Task":{"Id":2,"Status":"Canceled","CreationOptions":"RunContinuationsAsynchronously"}}}
{"@t":"2022-11-29T09:30:46.9428226Z","@mt":"连接弹幕服务器 {Mode} {Host}:{Port} 房间: {RoomId} TokenLength: {TokenLength}","@l":"Debug","Mode":"Tcp","Host":"hw-bj-live-comet-07.chat.bilibili.com","Port":2243,"RoomId":25846913,"TokenLength":148,"SourceContext":"BililiveRecorder.Core.Api.Danmaku.DanmakuClient","ProcessId":7426,"ThreadId":16,"ThreadName":".NET ThreadPool Worker"}
{"@t":"2022-11-29T09:30:46.9577773Z","@mt":"连接弹幕服务器 {Mode} {Host}:{Port} 房间: {RoomId} TokenLength: {TokenLength}","@l":"Debug","Mode":"Wss","Host":"tx-gz-live-comet-05.chat.bilibili.com","Port":443,"RoomId":178033,"TokenLength":148,"SourceContext":"BililiveRecorder.Core.Api.Danmaku.DanmakuClient","ProcessId":7426,"ThreadId":16,"ThreadName":".NET ThreadPool Worker"}
{"@t":"2022-11-29T09:30:56.9608037Z","@mt":"连接弹幕服务器时出错","@l":"Warning","@x":"System.Threading.Tasks.TaskCanceledException: A task was canceled.\n   at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.GetHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)\n   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n   at System.Net.WebSockets.WebSocketHandle.ConnectAsync(Uri uri, CancellationToken cancellationToken, ClientWebSocketOptions options)\n   at System.Net.WebSockets.ClientWebSocket.ConnectAsyncCore(Uri uri, CancellationToken cancellationToken)\n   at BililiveRecorder.Core.Api.Danmaku.DanmakuTransportWebSocket.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken) in /home/runner/work/BililiveRecorder/BililiveRecorder/BililiveRecorder.Core/Api/Danmaku/DanmakuTransportWebSocket.cs:line 42\n   at BililiveRecorder.Core.Api.Danmaku.DanmakuClient.ConnectAsync(Int32 roomid, DanmakuTransportMode transportMode, CancellationToken cancellationToken) in /home/runner/work/BililiveRecorder/BililiveRecorder/BililiveRecorder.Core/Api/Danmaku/DanmakuClient.cs:line 95\n   at BililiveRecorder.Core.Room.<>c__DisplayClass95_0.<<StartDamakuConnection>b__0>d.MoveNext() in /home/runner/work/BililiveRecorder/BililiveRecorder/BililiveRecorder.Core/Room.cs:line 349","RoomId":178033,"SourceContext":"BililiveRecorder.Core.Room","ProcessId":7426,"ThreadId":15,"ThreadName":".NET ThreadPool Worker","ExceptionDetail":{"Type":"System.Threading.Tasks.TaskCanceledException","HResult":-2146233029,"Message":"A task was canceled.","Source":"System.Private.CoreLib","TargetSite":"Void ThrowForNonSuccess(System.Threading.Tasks.Task)","CancellationToken":"CancellationRequested: true","Task":{"Id":3,"Status":"Canceled","CreationOptions":"RunContinuationsAsynchronously"}}}
{"@t":"2022-11-29T09:31:05.9644234Z","@mt":"连接弹幕服务器 {Mode} {Host}:{Port} 房间: {RoomId} TokenLength: {TokenLength}","@l":"Debug","Mode":"Ws","Host":"tx-gz-live-comet-05.chat.bilibili.com","Port":2244,"RoomId":178033,"TokenLength":148,"SourceContext":"BililiveRecorder.Core.Api.Danmaku.DanmakuClient","ProcessId":7426,"ThreadId":12,"ThreadName":".NET ThreadPool Worker"}
{"@t":"2022-11-29T09:31:15.9649347Z","@mt":"连接弹幕服务器时出错","@l":"Warning","@x":"System.Threading.Tasks.TaskCanceledException: A task was canceled.\n   at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.GetHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)\n   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n   at System.Net.WebSockets.WebSocketHandle.ConnectAsync(Uri uri, CancellationToken cancellationToken, ClientWebSocketOptions options)\n   at System.Net.WebSockets.ClientWebSocket.ConnectAsyncCore(Uri uri, CancellationToken cancellationToken)\n   at BililiveRecorder.Core.Api.Danmaku.DanmakuTransportWebSocket.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken) in /home/runner/work/BililiveRecorder/BililiveRecorder/BililiveRecorder.Core/Api/Danmaku/DanmakuTransportWebSocket.cs:line 42\n   at BililiveRecorder.Core.Api.Danmaku.DanmakuClient.ConnectAsync(Int32 roomid, DanmakuTransportMode transportMode, CancellationToken cancellationToken) in /home/runner/work/BililiveRecorder/BililiveRecorder/BililiveRecorder.Core/Api/Danmaku/DanmakuClient.cs:line 95\n   at BililiveRecorder.Core.Room.<>c__DisplayClass95_0.<<StartDamakuConnection>b__0>d.MoveNext() in /home/runner/work/BililiveRecorder/BililiveRecorder/BililiveRecorder.Core/Room.cs:line 349","RoomId":178033,"SourceContext":"BililiveRecorder.Core.Room","ProcessId":7426,"ThreadId":19,"ThreadName":".NET ThreadPool Worker","ExceptionDetail":{"Type":"System.Threading.Tasks.TaskCanceledException","HResult":-2146233029,"Message":"A task was canceled.","Source":"System.Private.CoreLib","TargetSite":"Void ThrowForNonSuccess(System.Threading.Tasks.Task)","CancellationToken":"CancellationRequested: true","Task":{"Id":4,"Status":"Canceled","CreationOptions":"RunContinuationsAsynchronously"}}}
{"@t":"2022-11-29T09:31:24.9681647Z","@mt":"连接弹幕服务器 {Mode} {Host}:{Port} 房间: {RoomId} TokenLength: {TokenLength}","@l":"Debug","Mode":"Tcp","Host":"hw-bj-live-comet-05.chat.bilibili.com","Port":2243,"RoomId":178033,"TokenLength":148,"SourceContext":"BililiveRecorder.Core.Api.Danmaku.DanmakuClient","ProcessId":7426,"ThreadId":8,"ThreadName":".NET ThreadPool Worker"}
{"@t":"2022-11-29T09:31:55.9771710Z","@mt":"Ctrl+C pressed. Exiting","ProcessId":7426,"ThreadId":11,"ThreadName":".NET Signal Handler"}
{"@t":"2022-11-29T09:31:55.9799902Z","@mt":"Dispose called","@l":"Debug","SourceContext":"BililiveRecorder.Core.Recorder","ProcessId":7426,"ThreadId":11,"ThreadName":".NET Signal Handler"}
Genteure commented 1 year ago

看起来就是连接超时了,网络原因。你在是什么网络环境运行的?有条件换个网络环境试一下吗?

chesha1 commented 1 year ago

看起来就是连接超时了,网络原因。你在是什么网络环境运行的?有条件换个网络环境试一下吗?

用的是北美的VPS机房,B站会对北美的线路有限制吗?但是视频录得了,弹幕录不了就很奇怪,按理说这两个是同一个网络环境下的

Genteure commented 1 year ago

你的 IP 被墙了吧,找几个国内 IP ping 一下试试。 连的国内弹幕服务器全部超时,直播流在美国有 CDN。

chesha1 commented 1 year ago

你的 IP 被墙了吧,找几个国内 IP ping 一下试试。 连的国内弹幕服务器全部超时,直播流在美国有 CDN。

还真是这个原因,感谢解答