即刻创作:用 Trickle + GLM-4.6 API 构建互动小说创作工具

人们眼中的天才之所以卓越非凡,并非天资超人一等而是付出了持续不断的努力。1万小时的锤炼是任何人从平凡变成超凡的必要条件。———— 马尔科姆·格拉德威尔

🌟 Hello,我是Xxtaoaooo!

🌈 “代码是逻辑的诗篇,架构是思想的交响”


一、摘要

在生成式AI快速演进的今天,互动小说(Interactive Fiction)作为一种融合叙事性与用户参与感的数字内容形式,正迎来新的创作范式。传统互动小说依赖作者手动编写大量分支剧情,开发成本高、迭代慢。而借助大语言模型(LLM)的上下文理解与生成能力,配合流式响应机制,可以显著降低创作门槛并提升内容动态性。

本文围绕如何使用 Trickle 流式处理框架与 GLM-4.6 API 构建一个轻量级但功能完整的互动小说创作工具展开。Trickle是全球首个无缝衔接多模态生成的 Vibe Coding 工具。把多模态生成(图像、视频)和 网站 / App 搭建完全打通,真正实现从灵感到上线的一站式创作;而 GLM-4.6 作为智谱 AI 推出的高性能文本模型,在中文叙事生成、角色一致性与上下文记忆方面表现优异。

本文将带你从零开始,利用 Trickle Magic Canvas 可视化开发平台,结合 智谱 AI 提供的 GLM-4.6 大模型API,亲手打造一个智能小说生成器。它不仅能根据你的开头智能生成多个精彩故事分支、自定义标题与开头输入、创作历史管理(包括查看、继续创作与一键删除),以及对已生成内容进行局部调整和重新续写,堪称你的私人AI小说创作助手。


二、Trickle平台与智谱GLM-4.6模型介绍

2.1 Trickle平台

Trickle - 官方

Trickle Magic Canvas 是全球首款用于 vibe codingAgentic Canvas。它让人类与 AI 在可视化环境中协作共创,直接生成生产级可用的应用与网站。

告别“先设计后编码”的线性流程,或与 AI 不断对话的低效模式,Magic Canvas 本质上是 上下文工程的可视化空间。在Trickle平台,Agent 能够更准确地理解意图并生成多页面应用,设计细节也可以通过拖拽、选择等直观操作完成。所有修改都会实时转化并同步到代码,实现 代码即设计,设计即应用。在这种可视化上下文驱动的开发模式中,灵感能被顺畅地转化为现实。

Trickle 最强大的 Magic Canvas 能够打破传统黑盒模式,传统对话式 Agent 后台默默创作,用户无法看见构建过程,只能通过最终结果反馈修改,而且Magic Canvas能够实时画布展示创作过程,同时支持选定调整,就像推积木一样,一个一个模块调整优化,最终形成一副完美作品!

2.2 智谱GLM-4.6模型

智谱AI - 官方

GLM-4.6 是智谱Ai最新的旗舰模型,其总参数量 355B,激活参数 32B。GLM-4.6 具备六大核心能力:

  • 高级编码能力:在公开基准与真实编程任务中,GLM-4.6 的代码能力对齐 Claude Sonnet 4,是国内已知的最好的 Coding 模型。
  • 上下文长度:上下文窗口由 128K→200K,适应更长的代码和智能体任务。
  • 推理能力:推理能力提升,并支持在推理过程中调用工具。
  • 搜索能力:增强了模型在工具调用和搜索智能体上的表现,在智能体框架中表现更好。
  • 写作能力:在文风、可读性与角色扮演场景中更符合人类偏好。
  • 多语言翻译:进一步增强跨语种任务的处理效果。

使用智谱 GLM-4.6模型来赋予Ai小说创作能力那是非常合适!


三、应用效果展示

体验地址:欢迎 - 故事黑洞

3.1 欢迎页

首页(用户未配置智谱GLM-4.6模型):

3.2 故事创建

故事创作页(核心,树形结构清晰展示整个故事的发展路径与分支概览):

3.4 创作时光

创作时光(历史查看及故事回溯界面):

3.5 API配置管理

API配置页面(后续还可进行优化 配置更多模型 丰富小说生成图片能力)


四、应用开发实战

4.1 模型API Key获取

1. 首先先我们去智谱Ai官网注册创建自己的的API Key:智谱API Key创建

2. 查看智谱GLM-4.6 API开发文档,AI小说创作能力的强弱和使用的模型能力关系非常大。

API 调用实例(后续替换成个人API Key):

curl -X POST "https://open.bigmodel.cn/api/paas/v4/chat/completions" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer your-api-key" \
    -d '{
        "model": "glm-4.6",
        "messages": [
        {
            "role": "user",
            "content": "作为一名营销专家,请为我的产品创作一个吸引人的口号"
        },
        {
            "role": "assistant",
            "content": "当然,要创作一个吸引人的口号,请告诉我一些关于您产品的信息"
        },
        {
            "role": "user",
            "content": "智谱AI 开放平台"
        }
            ],
            "thinking": {
            "type": "enabled"
        },
            "max_tokens": 65536,
            "temperature": 1.0
        }'
curl -X POST "https://open.bigmodel.cn/api/paas/v4/chat/completions" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer your-api-key" \
    -d '{
        "model": "glm-4.6",
        "messages": [
        {
            "role": "user",
            "content": "作为一名营销专家,请为我的产品创作一个吸引人的口号"
        },
        {
            "role": "assistant",
            "content": "当然,要创作一个吸引人的口号,请告诉我一些关于您产品的信息"
        },
        {
            "role": "user",
            "content": "智谱AI开放平台"
        }
            ],
            "thinking": {
            "type": "enabled"
        },
            "stream": true,
            "max_tokens": 65536,
            "temperature": 1.0
        }'

4.2 Trickle平台注册

通过Trickle平台进入注册,刚开始注册可以获取免费额度进行体验

4.3 Trickle Magic Canvas开发

这里我们选择画布模式(Canvas mode

输入提示词,最好是提供结构化的提示词,最开始我以日常对话式进行coding,发现最终效果没有结构化提示词的好,后续我基本通过结构化的需求形式让Trickle进行开发

提示词:

我需要开发一款Ai小说创作平台,名称为智能小说创作家,流程是用户提供故事的标题和50-200字左右的小说故事开头,提供完应用会调用GLM-4.6模型,生成后续五个情节分支概览,用户可以任意选择某一分支。选择分支之后立马调用GLM-4.6生成具体的情节,大约300-500百字左右。未被选择的分支废弃,同时用户还可以手动修改分支内容创作,选择的分支使用树形结构一级一级往下展示,但是始终展示当前的分支,持续重复。采用React技术,风格使用新粗野风格,多用白色、橙色、绿色、蓝色、灰色等,流畅的交互设计。无需登录,只需要几个页面即可,首页核心创作功能,API Key 的配置页面(保存到本地的local storage中)。 GLM4.6调用示例: const url = ' https://open.bigmodel.cn/api/paas/v4/chat/completions '; const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"model":"glm-4.6","messages":[{"role":"system","content":"你是一个有用的AI助手。"},{"role":"user","content":"请介绍一下人工智能的发展历程。"}],"temperature":1,"max_tokens":65536,"stream":false}'};

可以看到,这里Trickle Magic Canvas开始构建画布进行创作

这里还会生成相应的文档,如果我们想要调整的话,可以进行编辑或删除;对于应用开发,技术文档就是领头羊,防止脱离实际需求。

在我体验很多产品后发现,技术文档越是完善,应用开发效果就越完美。

同时,作为程序猿的小伙伴们,如果觉得Ai提供的页面不太完善,同时我们想自己上手操作的话,可以手动修改源码调整,这样就能完全由我们自己控制偏差。

在我开发途中,出现了一个小插曲。当我提出大改样式的需求后,他将所有页面背景图片调整成同一个,但是我希望使用不同背景来使样式更加丰富,这样就导致我不知道如何进行下去。

这个时候我发现可以有一个直接跳过版本的功能,这个功能非常好评,可以在大方向走偏的时候及时拉回,如果在传统的coding时,我不敢相信要Ctrl Z多少下!

同时Trickle还提供个人图库供AI Coding创作使用

不仅如此,Trickle还内置Nana Banana、Seedream 4.0、Seedance 1.0 pro等顶尖多模态模型,图片、视频一键生成,无需切换其他工具,一站式完成,all in one

4.4 应用部署

功能开发完成,我们可以一键式部署上线

调整应用介绍、应用图标,为你的创意添上最后一笔。整个流程下来花费不到五天;想想传统开发下,开发这样一款应用至少需要一个星期,还达不到这样的效果,Trickle Magic Canvas 赋予我们带来了实现创意的能力!


五、总结与展望

通过整合 Trickle 与 智谱GLM-4.6 API,我构建了一个高效、可扩展的互动小说创作工具原型。该工具不仅验证了流式 LLM 在动态叙事中的可行性,也为内容创作者提供了“AI 协同创作”的新范式。同时我们成功将「AI小说创作」从概念落地为可交互的生产力工具。

核心价值在于:
开发效率革命:传统开发需 1 周 → Trickle 实现 5 天内交付(含调试)
创作体验革新:从「手动写分支」到「AI 动态生成树形叙事」
技术可扩展性:架构支持无缝接入语音、多角色记忆等新能力

技术本质:用 「状态驱动 + 流式生成」 替代传统「静态内容库」,让 AI 成为创作伙伴而非工具。

图1:系统架构图(服务编排)

在实际开发中,我深刻体会到:技术选型必须服务于用户体验——Trickle 的规则机制有效防止了实际开发走偏,而 GLM-4.6 的中文叙事能力则大幅提升了剧情质量。未来,该工具可进一步集成语音输入、多角色对话记忆、剧情质量评估(如一致性检测)等功能。

更重要的是,这种“状态 + 流式生成”的架构可迁移至教育、游戏、客服等多个领域。技术的价值不在于炫技,而在于解决真实问题。希望本文能为探索生成式 AI 应用落地的同行提供有价值的参考。互动小说只是起点,人机共创的叙事革命才刚刚开始。

在Trickle平台,我们可以尽情发挥自己创作思路,不需要考虑是否能不能实现,只要有创意,就能带来无限惊喜!!!

🌟 别再等待“完美工具”——
⚙️ 用 《故事黑洞》 输入你的故事开头(哪怕只有 50 字),
🚀 看 AI 如何为你裂变出 5 个意想不到的结局!
👉 体验地址:https://cgelw4dkrvh7.trickle.host/welcome.html

🧩 技术的价值,永远藏在"能解决真实问题"的那一刻。
期待在评论区看到你生成的第一个故事分支!


已导航到http://localhost:8080/ChatInterface index.js:484 [object Object] to.meta.requireAuth ChatInterface.vue:469 [STOMP] Opening Web Socket... ChatInterface.vue:469 [STOMP] Web Socket Opened... ChatInterface.vue:469 [STOMP] >>> CONNECT accept-version:1.2,1.1,1.0 heart-beat:4000,4000 ChatInterface.vue:469 [STOMP] Received data ChatInterface.vue:469 [STOMP] <<< CONNECTED heart-beat:0,0 version:1.2 content-length:0 ChatInterface.vue:469 [STOMP] connected to server undefined ChatInterface.vue:474 [WebSocket] 连接功 ChatInterface.vue:469 [STOMP] >>> SUBSCRIBE id:sub-0 destination:/user/tutor001/queue/messages ChatInterface.vue:469 [STOMP] >>> SUBSCRIBE id:sub-1 destination:/user/tutor001/queue/typing ChatInterface.vue:469 [STOMP] >>> SUBSCRIBE id:sub-2 destination:/topic/onlineUsers ChatInterface.vue:469 [STOMP] >>> SUBSCRIBE id:sub-3 destination:/user/tutor001/queue/video ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/user.online content-length:8 ChatInterface.vue:469 [STOMP] Received data ChatInterface.vue:469 [STOMP] <<< MESSAGE content-length:12 message-id:oo2gblwn-0 subscription:sub-2 content-type:application/json destination:/topic/onlineUsers content-length:12 ChatInterface.vue:531 在线用户列表更新: Proxy(Array) {0: 'tutor001'} ChatInterface.vue:469 [STOMP] Received data ChatInterface.vue:469 [STOMP] <<< MESSAGE content-length:12 message-id:oo2gblwn-1 subscription:sub-2 content-type:application/json destination:/topic/onlineUsers content-length:12 ChatInterface.vue:531 在线用户列表更新: Proxy(Array) {0: 'tutor001'} ChatInterface.vue:469 [STOMP] Received data ChatInterface.vue:469 [STOMP] <<< MESSAGE content-length:21 message-id:oo2gblwn-2 subscription:sub-2 content-type:application/json destination:/topic/onlineUsers content-length:21 ChatInterface.vue:531 在线用户列表更新: Proxy(Array) {0: '李四', 1: 'tutor001'} ChatInterface.vue:469 [STOMP] Received data ChatInterface.vue:469 [STOMP] <<< MESSAGE content-length:21 message-id:oo2gblwn-5 subscription:sub-2 content-type:application/json destination:/topic/onlineUsers content-length:21 ChatInterface.vue:531 在线用户列表更新: Proxy(Array) {0: '李四', 1: 'tutor001'} ChatInterface.vue:469 [STOMP] Received data ChatInterface.vue:469 [STOMP] <<< MESSAGE content-length:21 message-id:oo2gblwn-6 subscription:sub-2 content-type:application/json destination:/topic/onlineUsers content-length:21 ChatInterface.vue:531 在线用户列表更新: Proxy(Array) {0: '李四', 1: 'tutor001'} ChatInterface.vue:469 [STOMP] Received data ChatInterface.vue:469 [STOMP] <<< MESSAGE content-length:21 message-id:oo2gblwn-8 subscription:sub-2 content-type:application/json destination:/topic/onlineUsers content-length:21 ChatInterface.vue:531 在线用户列表更新: Proxy(Array) {0: '李四', 1: 'tutor001'} 已导航到http://localhost:8080/ChatInterface index.js:484 [object Object] to.meta.requireAuth ChatInterface.vue:469 [STOMP] Opening Web Socket... ChatInterface.vue:469 [STOMP] Web Socket Opened... ChatInterface.vue:469 [STOMP] >>> CONNECT accept-version:1.2,1.1,1.0 heart-beat:4000,4000 ChatInterface.vue:469 [STOMP] Received data ChatInterface.vue:469 [STOMP] <<< CONNECTED heart-beat:0,0 version:1.2 content-length:0 ChatInterface.vue:469 [STOMP] connected to server undefined ChatInterface.vue:474 [WebSocket] 连接功 ChatInterface.vue:469 [STOMP] >>> SUBSCRIBE id:sub-0 destination:/user/tutor001/queue/messages ChatInterface.vue:469 [STOMP] >>> SUBSCRIBE id:sub-1 destination:/user/tutor001/queue/typing ChatInterface.vue:469 [STOMP] >>> SUBSCRIBE id:sub-2 destination:/topic/onlineUsers ChatInterface.vue:469 [STOMP] >>> SUBSCRIBE id:sub-3 destination:/user/tutor001/queue/video ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/user.online content-length:8 ChatInterface.vue:469 [STOMP] Received data ChatInterface.vue:469 [STOMP] <<< MESSAGE content-length:21 message-id:nbsq1pbk-11 subscription:sub-2 content-type:application/json destination:/topic/onlineUsers content-length:21 ChatInterface.vue:531 在线用户列表更新: Proxy(Array) {0: '李四', 1: 'tutor001'} ChatInterface.vue:469 [STOMP] Received data ChatInterface.vue:469 [STOMP] <<< MESSAGE content-length:21 message-id:nbsq1pbk-13 subscription:sub-2 content-type:application/json destination:/topic/onlineUsers content-length:21 ChatInterface.vue:531 在线用户列表更新: Proxy(Array) {0: '李四', 1: 'tutor001'} ChatInterface.vue:598 开始视频通话,目标用户: 李四 ChatInterface.vue:628 发送offer: {sdp: 'v=0\r\no=- 3977416579696692181 2 IN IP4 127.0.0.1\r\ns…53d67bb5a1 3aaf8b27-089d-4978-aef4-b309be8a8d9d\r\n', type: 'offer'} ChatInterface.vue:769 发送视频信号: {type: 'offer', from: 'tutor001', to: '李四', data: {…}, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:6127 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:1350954518 1 udp 2122260223 2.0.0.1 6123…eration 0 ufrag SUnO network-id 3 network-cost 50', sdpMid: '0', sdpMLineIndex: 0, foundation: '1350954518', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:324 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:2836985402 1 udp 2122194687 169.254.111.…236 typ host generation 0 ufrag SUnO network-id 1', sdpMid: '0', sdpMLineIndex: 0, foundation: '2836985402', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:315 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:1179358123 1 udp 2122129151 169.254.7.24…237 typ host generation 0 ufrag SUnO network-id 2', sdpMid: '0', sdpMLineIndex: 0, foundation: '1179358123', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:314 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:1117823359 1 udp 2122063615 192.168.56.1…238 typ host generation 0 ufrag SUnO network-id 4', sdpMid: '0', sdpMLineIndex: 0, foundation: '1117823359', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:313 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:2350533012 1 udp 2121998079 10.1.25.15 6…eration 0 ufrag SUnO network-id 5 network-cost 10', sdpMid: '0', sdpMLineIndex: 0, foundation: '2350533012', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:327 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:1350954518 1 udp 2122260223 2.0.0.1 6124…eration 0 ufrag SUnO network-id 3 network-cost 50', sdpMid: '1', sdpMLineIndex: 1, foundation: '1350954518', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:324 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:2836985402 1 udp 2122194687 169.254.111.…241 typ host generation 0 ufrag SUnO network-id 1', sdpMid: '1', sdpMLineIndex: 1, foundation: '2836985402', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:315 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:1179358123 1 udp 2122129151 169.254.7.24…242 typ host generation 0 ufrag SUnO network-id 2', sdpMid: '1', sdpMLineIndex: 1, foundation: '1179358123', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:314 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:1117823359 1 udp 2122063615 192.168.56.1…243 typ host generation 0 ufrag SUnO network-id 4', sdpMid: '1', sdpMLineIndex: 1, foundation: '1117823359', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:313 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:2350533012 1 udp 2121998079 10.1.25.15 6…eration 0 ufrag SUnO network-id 5 network-cost 10', sdpMid: '1', sdpMLineIndex: 1, foundation: '2350533012', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:327 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:773573403 1 tcp 1518280447 2.0.0.1 9 typ…eration 0 ufrag SUnO network-id 3 network-cost 50', sdpMid: '0', sdpMLineIndex: 0, foundation: '773573403', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:334 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:3615937335 1 tcp 1518214911 169.254.111.…ptype active generation 0 ufrag SUnO network-id 1', sdpMid: '0', sdpMLineIndex: 0, foundation: '3615937335', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:326 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:953530022 1 tcp 1518149375 169.254.7.244…ptype active generation 0 ufrag SUnO network-id 2', sdpMid: '0', sdpMLineIndex: 0, foundation: '953530022', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:324 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:1010730098 1 tcp 1518083839 192.168.56.1…ptype active generation 0 ufrag SUnO network-id 4', sdpMid: '0', sdpMLineIndex: 0, foundation: '1010730098', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:324 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:4068764825 1 tcp 1518018303 10.1.25.15 9…eration 0 ufrag SUnO network-id 5 network-cost 10', sdpMid: '0', sdpMLineIndex: 0, foundation: '4068764825', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:338 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:773573403 1 tcp 1518280447 2.0.0.1 9 typ…eration 0 ufrag SUnO network-id 3 network-cost 50', sdpMid: '1', sdpMLineIndex: 1, foundation: '773573403', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:334 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:3615937335 1 tcp 1518214911 169.254.111.…ptype active generation 0 ufrag SUnO network-id 1', sdpMid: '1', sdpMLineIndex: 1, foundation: '3615937335', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:326 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:953530022 1 tcp 1518149375 169.254.7.244…ptype active generation 0 ufrag SUnO network-id 2', sdpMid: '1', sdpMLineIndex: 1, foundation: '953530022', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:324 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:1010730098 1 tcp 1518083839 192.168.56.1…ptype active generation 0 ufrag SUnO network-id 4', sdpMid: '1', sdpMLineIndex: 1, foundation: '1010730098', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:324 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:4068764825 1 tcp 1518018303 10.1.25.15 9…eration 0 ufrag SUnO network-id 5 network-cost 10', sdpMid: '1', sdpMLineIndex: 1, foundation: '4068764825', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:338 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:4255104587 1 udp 1685790463 221.238.213.…eration 0 ufrag SUnO network-id 5 network-cost 10', sdpMid: '0', sdpMLineIndex: 0, foundation: '4255104587', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:362 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:4255104587 1 udp 1685790463 221.238.213.…eration 0 ufrag SUnO network-id 5 network-cost 10', sdpMid: '1', sdpMLineIndex: 1, foundation: '4255104587', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:362 ChatInterface.vue:769 发送视频信号: {type: 'end', from: 'tutor001', to: '李四', data: null, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:136 ChatInterface.vue:598 开始视频通话,目标用户: 李四 ChatInterface.vue:628 发送offer: {sdp: 'v=0\r\no=- 8871718034731198115 2 IN IP4 127.0.0.1\r\ns…f80fb029c3 37129c2b-c4cc-4b8d-8432-ae848a746b35\r\n', type: 'offer'} ChatInterface.vue:769 发送视频信号: {type: 'offer', from: 'tutor001', to: '李四', data: {…}, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:6121 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:3001380172 1 udp 2122260223 2.0.0.1 6255…eration 0 ufrag qAVA network-id 3 network-cost 50', sdpMid: '0', sdpMLineIndex: 0, foundation: '3001380172', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:324 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:2160368823 1 udp 2122194687 169.254.111.…560 typ host generation 0 ufrag qAVA network-id 1', sdpMid: '0', sdpMLineIndex: 0, foundation: '2160368823', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:315 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:119761920 1 udp 2122129151 169.254.7.244…561 typ host generation 0 ufrag qAVA network-id 2', sdpMid: '0', sdpMLineIndex: 0, foundation: '119761920', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:313 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:2258211327 1 udp 2122063615 192.168.56.1…562 typ host generation 0 ufrag qAVA network-id 4', sdpMid: '0', sdpMLineIndex: 0, foundation: '2258211327', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:313 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:2978943207 1 udp 2121998079 10.1.25.15 6…eration 0 ufrag qAVA network-id 5 network-cost 10', sdpMid: '0', sdpMLineIndex: 0, foundation: '2978943207', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:327 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:3001380172 1 udp 2122260223 2.0.0.1 6256…eration 0 ufrag qAVA network-id 3 network-cost 50', sdpMid: '1', sdpMLineIndex: 1, foundation: '3001380172', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:324 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:2160368823 1 udp 2122194687 169.254.111.…565 typ host generation 0 ufrag qAVA network-id 1', sdpMid: '1', sdpMLineIndex: 1, foundation: '2160368823', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:315 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:119761920 1 udp 2122129151 169.254.7.244…566 typ host generation 0 ufrag qAVA network-id 2', sdpMid: '1', sdpMLineIndex: 1, foundation: '119761920', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:313 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:2258211327 1 udp 2122063615 192.168.56.1…567 typ host generation 0 ufrag qAVA network-id 4', sdpMid: '1', sdpMLineIndex: 1, foundation: '2258211327', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:313 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:2978943207 1 udp 2121998079 10.1.25.15 6…eration 0 ufrag qAVA network-id 5 network-cost 10', sdpMid: '1', sdpMLineIndex: 1, foundation: '2978943207', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:327 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:3425341396 1 tcp 1518280447 2.0.0.1 9 ty…eration 0 ufrag qAVA network-id 3 network-cost 50', sdpMid: '0', sdpMLineIndex: 0, foundation: '3425341396', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:335 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:4262166063 1 tcp 1518214911 169.254.111.…ptype active generation 0 ufrag qAVA network-id 1', sdpMid: '0', sdpMLineIndex: 0, foundation: '4262166063', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:326 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:2045546136 1 tcp 1518149375 169.254.7.24…ptype active generation 0 ufrag qAVA network-id 2', sdpMid: '0', sdpMLineIndex: 0, foundation: '2045546136', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:325 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:4166415207 1 tcp 1518083839 192.168.56.1…ptype active generation 0 ufrag qAVA network-id 4', sdpMid: '0', sdpMLineIndex: 0, foundation: '4166415207', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:324 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:3477140095 1 tcp 1518018303 10.1.25.15 9…eration 0 ufrag qAVA network-id 5 network-cost 10', sdpMid: '0', sdpMLineIndex: 0, foundation: '3477140095', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:338 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:3425341396 1 tcp 1518280447 2.0.0.1 9 ty…eration 0 ufrag qAVA network-id 3 network-cost 50', sdpMid: '1', sdpMLineIndex: 1, foundation: '3425341396', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:335 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:4262166063 1 tcp 1518214911 169.254.111.…ptype active generation 0 ufrag qAVA network-id 1', sdpMid: '1', sdpMLineIndex: 1, foundation: '4262166063', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:326 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:2045546136 1 tcp 1518149375 169.254.7.24…ptype active generation 0 ufrag qAVA network-id 2', sdpMid: '1', sdpMLineIndex: 1, foundation: '2045546136', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:325 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:4166415207 1 tcp 1518083839 192.168.56.1…ptype active generation 0 ufrag qAVA network-id 4', sdpMid: '1', sdpMLineIndex: 1, foundation: '4166415207', component: 'rtp', …} ChatInterface.vue:769 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} ChatInterface.vue:469 [STOMP] >>> SEND destination:/app/video.send content-length:324 ChatInterface.vue:610 发送ICE候选: RTCIceCandidate {candidate: 'candidate:3477140095 1 tcp 1518018303 10.1.25.15 9…eration 0 ufrag qAVA network-id 5 network-cost 10', sdpMid: '1', sdpMLineIndex: 1, foundation: '3477140095', component: 'rtp', …} 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} [STOMP] >>> SEND destination:/app/video.send content-length:338 发送ICE候选: RTCIceCandidate {candidate: 'candidate:2811386453 1 udp 1685790463 221.238.213.…eration 0 ufrag qAVA network-id 5 network-cost 10', sdpMid: '1', sdpMLineIndex: 1, foundation: '2811386453', component: 'rtp', …} 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} [STOMP] >>> SEND destination:/app/video.send content-length:362 发送ICE候选: RTCIceCandidate {candidate: 'candidate:2811386453 1 udp 1685790463 221.238.213.…eration 0 ufrag qAVA network-id 5 network-cost 10', sdpMid: '0', sdpMLineIndex: 0, foundation: '2811386453', component: 'rtp', …} 发送视频信号: {type: 'candidate', from: 'tutor001', to: '李四', data: RTCIceCandidate, signalType: 'video', …} [STOMP] >>> SEND destination:/app/video.send content-length:362 2025-06-12T18:13:52.384+08:00 INFO 26864 --- [boundChannel-47] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:3001380172 1 udp 2122260223 2.0.0.1 62559 typ host generation 0 ufrag qAVA network-id 3 network-cost 50, sdpMid=0, sdpMLineIndex=0, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.383Z, status=SENDING) 2025-06-12T18:13:52.384+08:00 INFO 26864 --- [boundChannel-44] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=offer, from=tutor001, to=李四, data={sdp=v=0 o=- 8871718034731198115 2 IN IP4 127.0.0.1 s=- t=0 0 a=group:BUNDLE 0 1 a=extmap-allow-mixed a=msid-semantic: WMS a75f1cf4-11a8-4ef1-90c7-75f80fb029c3 m=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 13 110 126 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:qAVA a=ice-pwd:tSDE3DGsVNCqlkBAlM+S9giO a=ice-options:trickle a=fingerprint:sha-256 D7:73:BB:D5:5A:2D:28:A4:9E:0D:35:53:A2:A4:6A:23:66:2C:27:D6:6C:46:DF:C8:29:51:1C:95:11:64:4C:43 a=setup:actpass a=mid:0 a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid a=sendrecv a=msid:a75f1cf4-11a8-4ef1-90c7-75f80fb029c3 2d93ee5e-c107-4ef8-addb-efc3be10a333 a=rtcp-mux a=rtcp-rsize a=rtpmap:111 opus/48000/2 a=rtcp-fb:111 transport-cc a=fmtp:111 minptime=10;useinbandfec=1 a=rtpmap:63 red/48000/2 a=fmtp:63 111/111 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:13 CN/8000 a=rtpmap:110 telephone-event/48000 a=rtpmap:126 telephone-event/8000 a=ssrc:4122372830 cname:8UUhcSZdiMkp+IDj a=ssrc:4122372830 msid:a75f1cf4-11a8-4ef1-90c7-75f80fb029c3 2d93ee5e-c107-4ef8-addb-efc3be10a333 m=video 9 UDP/TLS/RTP/SAVPF 96 97 103 104 107 108 109 114 115 116 117 118 39 40 45 46 98 99 100 101 119 120 123 124 125 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:qAVA a=ice-pwd:tSDE3DGsVNCqlkBAlM+S9giO a=ice-options:trickle a=fingerprint:sha-256 D7:73:BB:D5:5A:2D:28:A4:9E:0D:35:53:A2:A4:6A:23:66:2C:27:D6:6C:46:DF:C8:29:51:1C:95:11:64:4C:43 a=setup:actpass a=mid:1 a=extmap:14 urn:ietf:params:rtp-hdrext:toffset a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:13 urn:3gpp:video-orientation a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id a=sendrecv a=msid:a75f1cf4-11a8-4ef1-90c7-75f80fb029c3 37129c2b-c4cc-4b8d-8432-ae848a746b35 a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=rtpmap:97 rtx/90000 a=fmtp:97 apt=96 a=rtpmap:103 H264/90000 a=rtcp-fb:103 goog-remb a=rtcp-fb:103 transport-cc a=rtcp-fb:103 ccm fir a=rtcp-fb:103 nack a=rtcp-fb:103 nack pli a=fmtp:103 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f a=rtpmap:104 rtx/90000 a=fmtp:104 apt=103 a=rtpmap:107 H264/90000 a=rtcp-fb:107 goog-remb a=rtcp-fb:107 transport-cc a=rtcp-fb:107 ccm fir a=rtcp-fb:107 nack a=rtcp-fb:107 nack pli a=fmtp:107 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f a=rtpmap:108 rtx/90000 a=fmtp:108 apt=107 a=rtpmap:109 H264/90000 a=rtcp-fb:109 goog-remb a=rtcp-fb:109 transport-cc a=rtcp-fb:109 ccm fir a=rtcp-fb:109 nack a=rtcp-fb:109 nack pli a=fmtp:109 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f a=rtpmap:114 rtx/90000 a=fmtp:114 apt=109 a=rtpmap:115 H264/90000 a=rtcp-fb:115 goog-remb a=rtcp-fb:115 transport-cc a=rtcp-fb:115 ccm fir a=rtcp-fb:115 nack a=rtcp-fb:115 nack pli a=fmtp:115 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f a=rtpmap:116 rtx/90000 a=fmtp:116 apt=115 a=rtpmap:117 H264/90000 a=rtcp-fb:117 goog-remb a=rtcp-fb:117 transport-cc a=rtcp-fb:117 ccm fir a=rtcp-fb:117 nack a=rtcp-fb:117 nack pli a=fmtp:117 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f a=rtpmap:118 rtx/90000 a=fmtp:118 apt=117 a=rtpmap:39 H264/90000 a=rtcp-fb:39 goog-remb a=rtcp-fb:39 transport-cc a=rtcp-fb:39 ccm fir a=rtcp-fb:39 nack a=rtcp-fb:39 nack pli a=fmtp:39 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=4d001f a=rtpmap:40 rtx/90000 a=fmtp:40 apt=39 a=rtpmap:45 AV1/90000 a=rtcp-fb:45 goog-remb a=rtcp-fb:45 transport-cc a=rtcp-fb:45 ccm fir a=rtcp-fb:45 nack a=rtcp-fb:45 nack pli a=fmtp:45 level-idx=5;profile=0;tier=0 a=rtpmap:46 rtx/90000 a=fmtp:46 apt=45 a=rtpmap:98 VP9/90000 a=rtcp-fb:98 goog-remb a=rtcp-fb:98 transport-cc a=rtcp-fb:98 ccm fir a=rtcp-fb:98 nack a=rtcp-fb:98 nack pli a=fmtp:98 profile-id=0 a=rtpmap:99 rtx/90000 a=fmtp:99 apt=98 a=rtpmap:100 VP9/90000 a=rtcp-fb:100 goog-remb a=rtcp-fb:100 transport-cc a=rtcp-fb:100 ccm fir a=rtcp-fb:100 nack a=rtcp-fb:100 nack pli a=fmtp:100 profile-id=2 a=rtpmap:101 rtx/90000 a=fmtp:101 apt=100 a=rtpmap:119 H264/90000 a=rtcp-fb:119 goog-remb a=rtcp-fb:119 transport-cc a=rtcp-fb:119 ccm fir a=rtcp-fb:119 nack a=rtcp-fb:119 nack pli a=fmtp:119 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f a=rtpmap:120 rtx/90000 a=fmtp:120 apt=119 a=rtpmap:123 red/90000 a=rtpmap:124 rtx/90000 a=fmtp:124 apt=123 a=rtpmap:125 ulpfec/90000 a=ssrc-group:FID 345462407 565921730 a=ssrc:345462407 cname:8UUhcSZdiMkp+IDj a=ssrc:345462407 msid:a75f1cf4-11a8-4ef1-90c7-75f80fb029c3 37129c2b-c4cc-4b8d-8432-ae848a746b35 a=ssrc:565921730 cname:8UUhcSZdiMkp+IDj a=ssrc:565921730 msid:a75f1cf4-11a8-4ef1-90c7-75f80fb029c3 37129c2b-c4cc-4b8d-8432-ae848a746b35 , type=offer}, signalType=video, sendtime=2025-06-12T10:13:52.381Z, status=SENDING) 2025-06-12T18:13:52.385+08:00 INFO 26864 --- [boundChannel-47] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:3001380172 1 udp 2122260223 2.0.0.1 62559 typ host generation 0 ufrag qAVA network-id 3 network-cost 50, sdpMid=0, sdpMLineIndex=0, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.383Z, status=SENDING) 2025-06-12T18:13:52.385+08:00 INFO 26864 --- [boundChannel-44] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=offer, from=tutor001, to=李四, data={sdp=v=0 o=- 8871718034731198115 2 IN IP4 127.0.0.1 s=- t=0 0 a=group:BUNDLE 0 1 a=extmap-allow-mixed a=msid-semantic: WMS a75f1cf4-11a8-4ef1-90c7-75f80fb029c3 m=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 13 110 126 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:qAVA a=ice-pwd:tSDE3DGsVNCqlkBAlM+S9giO a=ice-options:trickle a=fingerprint:sha-256 D7:73:BB:D5:5A:2D:28:A4:9E:0D:35:53:A2:A4:6A:23:66:2C:27:D6:6C:46:DF:C8:29:51:1C:95:11:64:4C:43 a=setup:actpass a=mid:0 a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid a=sendrecv a=msid:a75f1cf4-11a8-4ef1-90c7-75f80fb029c3 2d93ee5e-c107-4ef8-addb-efc3be10a333 a=rtcp-mux a=rtcp-rsize a=rtpmap:111 opus/48000/2 a=rtcp-fb:111 transport-cc a=fmtp:111 minptime=10;useinbandfec=1 a=rtpmap:63 red/48000/2 a=fmtp:63 111/111 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:13 CN/8000 a=rtpmap:110 telephone-event/48000 a=rtpmap:126 telephone-event/8000 a=ssrc:4122372830 cname:8UUhcSZdiMkp+IDj a=ssrc:4122372830 msid:a75f1cf4-11a8-4ef1-90c7-75f80fb029c3 2d93ee5e-c107-4ef8-addb-efc3be10a333 m=video 9 UDP/TLS/RTP/SAVPF 96 97 103 104 107 108 109 114 115 116 117 118 39 40 45 46 98 99 100 101 119 120 123 124 125 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:qAVA a=ice-pwd:tSDE3DGsVNCqlkBAlM+S9giO a=ice-options:trickle a=fingerprint:sha-256 D7:73:BB:D5:5A:2D:28:A4:9E:0D:35:53:A2:A4:6A:23:66:2C:27:D6:6C:46:DF:C8:29:51:1C:95:11:64:4C:43 a=setup:actpass a=mid:1 a=extmap:14 urn:ietf:params:rtp-hdrext:toffset a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:13 urn:3gpp:video-orientation a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id a=sendrecv a=msid:a75f1cf4-11a8-4ef1-90c7-75f80fb029c3 37129c2b-c4cc-4b8d-8432-ae848a746b35 a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=rtpmap:97 rtx/90000 a=fmtp:97 apt=96 a=rtpmap:103 H264/90000 a=rtcp-fb:103 goog-remb a=rtcp-fb:103 transport-cc a=rtcp-fb:103 ccm fir a=rtcp-fb:103 nack a=rtcp-fb:103 nack pli a=fmtp:103 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f a=rtpmap:104 rtx/90000 a=fmtp:104 apt=103 a=rtpmap:107 H264/90000 a=rtcp-fb:107 goog-remb a=rtcp-fb:107 transport-cc a=rtcp-fb:107 ccm fir a=rtcp-fb:107 nack a=rtcp-fb:107 nack pli a=fmtp:107 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f a=rtpmap:108 rtx/90000 a=fmtp:108 apt=107 a=rtpmap:109 H264/90000 a=rtcp-fb:109 goog-remb a=rtcp-fb:109 transport-cc a=rtcp-fb:109 ccm fir a=rtcp-fb:109 nack a=rtcp-fb:109 nack pli a=fmtp:109 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f a=rtpmap:114 rtx/90000 a=fmtp:114 apt=109 a=rtpmap:115 H264/90000 a=rtcp-fb:115 goog-remb a=rtcp-fb:115 transport-cc a=rtcp-fb:115 ccm fir a=rtcp-fb:115 nack a=rtcp-fb:115 nack pli a=fmtp:115 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f a=rtpmap:116 rtx/90000 a=fmtp:116 apt=115 a=rtpmap:117 H264/90000 a=rtcp-fb:117 goog-remb a=rtcp-fb:117 transport-cc a=rtcp-fb:117 ccm fir a=rtcp-fb:117 nack a=rtcp-fb:117 nack pli a=fmtp:117 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f a=rtpmap:118 rtx/90000 a=fmtp:118 apt=117 a=rtpmap:39 H264/90000 a=rtcp-fb:39 goog-remb a=rtcp-fb:39 transport-cc a=rtcp-fb:39 ccm fir a=rtcp-fb:39 nack a=rtcp-fb:39 nack pli a=fmtp:39 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=4d001f a=rtpmap:40 rtx/90000 a=fmtp:40 apt=39 a=rtpmap:45 AV1/90000 a=rtcp-fb:45 goog-remb a=rtcp-fb:45 transport-cc a=rtcp-fb:45 ccm fir a=rtcp-fb:45 nack a=rtcp-fb:45 nack pli a=fmtp:45 level-idx=5;profile=0;tier=0 a=rtpmap:46 rtx/90000 a=fmtp:46 apt=45 a=rtpmap:98 VP9/90000 a=rtcp-fb:98 goog-remb a=rtcp-fb:98 transport-cc a=rtcp-fb:98 ccm fir a=rtcp-fb:98 nack a=rtcp-fb:98 nack pli a=fmtp:98 profile-id=0 a=rtpmap:99 rtx/90000 a=fmtp:99 apt=98 a=rtpmap:100 VP9/90000 a=rtcp-fb:100 goog-remb a=rtcp-fb:100 transport-cc a=rtcp-fb:100 ccm fir a=rtcp-fb:100 nack a=rtcp-fb:100 nack pli a=fmtp:100 profile-id=2 a=rtpmap:101 rtx/90000 a=fmtp:101 apt=100 a=rtpmap:119 H264/90000 a=rtcp-fb:119 goog-remb a=rtcp-fb:119 transport-cc a=rtcp-fb:119 ccm fir a=rtcp-fb:119 nack a=rtcp-fb:119 nack pli a=fmtp:119 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f a=rtpmap:120 rtx/90000 a=fmtp:120 apt=119 a=rtpmap:123 red/90000 a=rtpmap:124 rtx/90000 a=fmtp:124 apt=123 a=rtpmap:125 ulpfec/90000 a=ssrc-group:FID 345462407 565921730 a=ssrc:345462407 cname:8UUhcSZdiMkp+IDj a=ssrc:345462407 msid:a75f1cf4-11a8-4ef1-90c7-75f80fb029c3 37129c2b-c4cc-4b8d-8432-ae848a746b35 a=ssrc:565921730 cname:8UUhcSZdiMkp+IDj a=ssrc:565921730 msid:a75f1cf4-11a8-4ef1-90c7-75f80fb029c3 37129c2b-c4cc-4b8d-8432-ae848a746b35 , type=offer}, signalType=video, sendtime=2025-06-12T10:13:52.381Z, status=SENDING) 2025-06-12T18:13:52.385+08:00 INFO 26864 --- [boundChannel-50] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2160368823 1 udp 2122194687 169.254.111.21 62560 typ host generation 0 ufrag qAVA network-id 1, sdpMid=0, sdpMLineIndex=0, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.383Z, status=SENDING) 2025-06-12T18:13:52.385+08:00 INFO 26864 --- [boundChannel-53] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:119761920 1 udp 2122129151 169.254.7.244 62561 typ host generation 0 ufrag qAVA network-id 2, sdpMid=0, sdpMLineIndex=0, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.384Z, status=SENDING) 2025-06-12T18:13:52.385+08:00 INFO 26864 --- [boundChannel-50] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2160368823 1 udp 2122194687 169.254.111.21 62560 typ host generation 0 ufrag qAVA network-id 1, sdpMid=0, sdpMLineIndex=0, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.383Z, status=SENDING) 2025-06-12T18:13:52.385+08:00 INFO 26864 --- [boundChannel-53] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:119761920 1 udp 2122129151 169.254.7.244 62561 typ host generation 0 ufrag qAVA network-id 2, sdpMid=0, sdpMLineIndex=0, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.384Z, status=SENDING) 2025-06-12T18:13:52.385+08:00 INFO 26864 --- [boundChannel-56] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2258211327 1 udp 2122063615 192.168.56.1 62562 typ host generation 0 ufrag qAVA network-id 4, sdpMid=0, sdpMLineIndex=0, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.384Z, status=SENDING) 2025-06-12T18:13:52.385+08:00 INFO 26864 --- [boundChannel-56] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2258211327 1 udp 2122063615 192.168.56.1 62562 typ host generation 0 ufrag qAVA network-id 4, sdpMid=0, sdpMLineIndex=0, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.384Z, status=SENDING) 2025-06-12T18:13:52.385+08:00 INFO 26864 --- [boundChannel-59] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2978943207 1 udp 2121998079 10.1.25.15 62563 typ host generation 0 ufrag qAVA network-id 5 network-cost 10, sdpMid=0, sdpMLineIndex=0, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.385Z, status=SENDING) 2025-06-12T18:13:52.385+08:00 INFO 26864 --- [boundChannel-59] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2978943207 1 udp 2121998079 10.1.25.15 62563 typ host generation 0 ufrag qAVA network-id 5 network-cost 10, sdpMid=0, sdpMLineIndex=0, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.385Z, status=SENDING) 2025-06-12T18:13:52.386+08:00 INFO 26864 --- [boundChannel-62] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:3001380172 1 udp 2122260223 2.0.0.1 62564 typ host generation 0 ufrag qAVA network-id 3 network-cost 50, sdpMid=1, sdpMLineIndex=1, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.385Z, status=SENDING) 2025-06-12T18:13:52.386+08:00 INFO 26864 --- [boundChannel-62] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:3001380172 1 udp 2122260223 2.0.0.1 62564 typ host generation 0 ufrag qAVA network-id 3 network-cost 50, sdpMid=1, sdpMLineIndex=1, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.385Z, status=SENDING) 2025-06-12T18:13:52.386+08:00 INFO 26864 --- [boundChannel-65] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2160368823 1 udp 2122194687 169.254.111.21 62565 typ host generation 0 ufrag qAVA network-id 1, sdpMid=1, sdpMLineIndex=1, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.386Z, status=SENDING) 2025-06-12T18:13:52.386+08:00 INFO 26864 --- [boundChannel-65] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2160368823 1 udp 2122194687 169.254.111.21 62565 typ host generation 0 ufrag qAVA network-id 1, sdpMid=1, sdpMLineIndex=1, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.386Z, status=SENDING) 2025-06-12T18:13:52.386+08:00 INFO 26864 --- [boundChannel-68] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:119761920 1 udp 2122129151 169.254.7.244 62566 typ host generation 0 ufrag qAVA network-id 2, sdpMid=1, sdpMLineIndex=1, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.386Z, status=SENDING) 2025-06-12T18:13:52.387+08:00 INFO 26864 --- [boundChannel-68] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:119761920 1 udp 2122129151 169.254.7.244 62566 typ host generation 0 ufrag qAVA network-id 2, sdpMid=1, sdpMLineIndex=1, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.386Z, status=SENDING) 2025-06-12T18:13:52.387+08:00 INFO 26864 --- [boundChannel-71] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2258211327 1 udp 2122063615 192.168.56.1 62567 typ host generation 0 ufrag qAVA network-id 4, sdpMid=1, sdpMLineIndex=1, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.387Z, status=SENDING) 2025-06-12T18:13:52.387+08:00 INFO 26864 --- [boundChannel-71] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2258211327 1 udp 2122063615 192.168.56.1 62567 typ host generation 0 ufrag qAVA network-id 4, sdpMid=1, sdpMLineIndex=1, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.387Z, status=SENDING) 2025-06-12T18:13:52.388+08:00 INFO 26864 --- [boundChannel-74] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2978943207 1 udp 2121998079 10.1.25.15 62568 typ host generation 0 ufrag qAVA network-id 5 network-cost 10, sdpMid=1, sdpMLineIndex=1, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.387Z, status=SENDING) 2025-06-12T18:13:52.388+08:00 INFO 26864 --- [boundChannel-74] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2978943207 1 udp 2121998079 10.1.25.15 62568 typ host generation 0 ufrag qAVA network-id 5 network-cost 10, sdpMid=1, sdpMLineIndex=1, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.387Z, status=SENDING) 2025-06-12T18:13:52.502+08:00 INFO 26864 --- [boundChannel-77] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:3425341396 1 tcp 1518280447 2.0.0.1 9 typ host tcptype active generation 0 ufrag qAVA network-id 3 network-cost 50, sdpMid=0, sdpMLineIndex=0, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.501Z, status=SENDING) 2025-06-12T18:13:52.502+08:00 INFO 26864 --- [boundChannel-77] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:3425341396 1 tcp 1518280447 2.0.0.1 9 typ host tcptype active generation 0 ufrag qAVA network-id 3 network-cost 50, sdpMid=0, sdpMLineIndex=0, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.501Z, status=SENDING) 2025-06-12T18:13:52.502+08:00 INFO 26864 --- [boundChannel-80] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:4262166063 1 tcp 1518214911 169.254.111.21 9 typ host tcptype active generation 0 ufrag qAVA network-id 1, sdpMid=0, sdpMLineIndex=0, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.502Z, status=SENDING) 2025-06-12T18:13:52.503+08:00 INFO 26864 --- [boundChannel-80] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:4262166063 1 tcp 1518214911 169.254.111.21 9 typ host tcptype active generation 0 ufrag qAVA network-id 1, sdpMid=0, sdpMLineIndex=0, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.502Z, status=SENDING) 2025-06-12T18:13:52.503+08:00 INFO 26864 --- [boundChannel-47] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:3477140095 1 tcp 1518018303 10.1.25.15 9 typ host tcptype active generation 0 ufrag qAVA network-id 5 network-cost 10, sdpMid=0, sdpMLineIndex=0, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.503Z, status=SENDING) 2025-06-12T18:13:52.503+08:00 INFO 26864 --- [boundChannel-83] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2045546136 1 tcp 1518149375 169.254.7.244 9 typ host tcptype active generation 0 ufrag qAVA network-id 2, sdpMid=0, sdpMLineIndex=0, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.502Z, status=SENDING) 2025-06-12T18:13:52.503+08:00 INFO 26864 --- [boundChannel-47] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:3477140095 1 tcp 1518018303 10.1.25.15 9 typ host tcptype active generation 0 ufrag qAVA network-id 5 network-cost 10, sdpMid=0, sdpMLineIndex=0, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.503Z, status=SENDING) 2025-06-12T18:13:52.503+08:00 INFO 26864 --- [boundChannel-54] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:3425341396 1 tcp 1518280447 2.0.0.1 9 typ host tcptype active generation 0 ufrag qAVA network-id 3 network-cost 50, sdpMid=1, sdpMLineIndex=1, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.503Z, status=SENDING) 2025-06-12T18:13:52.503+08:00 INFO 26864 --- [boundChannel-83] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2045546136 1 tcp 1518149375 169.254.7.244 9 typ host tcptype active generation 0 ufrag qAVA network-id 2, sdpMid=0, sdpMLineIndex=0, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.502Z, status=SENDING) 2025-06-12T18:13:52.503+08:00 INFO 26864 --- [boundChannel-54] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:3425341396 1 tcp 1518280447 2.0.0.1 9 typ host tcptype active generation 0 ufrag qAVA network-id 3 network-cost 50, sdpMid=1, sdpMLineIndex=1, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.503Z, status=SENDING) 2025-06-12T18:13:52.503+08:00 INFO 26864 --- [boundChannel-53] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:4262166063 1 tcp 1518214911 169.254.111.21 9 typ host tcptype active generation 0 ufrag qAVA network-id 1, sdpMid=1, sdpMLineIndex=1, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.504Z, status=SENDING) 2025-06-12T18:13:52.503+08:00 INFO 26864 --- [boundChannel-53] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:4262166063 1 tcp 1518214911 169.254.111.21 9 typ host tcptype active generation 0 ufrag qAVA network-id 1, sdpMid=1, sdpMLineIndex=1, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.504Z, status=SENDING) 2025-06-12T18:13:52.504+08:00 INFO 26864 --- [boundChannel-61] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2045546136 1 tcp 1518149375 169.254.7.244 9 typ host tcptype active generation 0 ufrag qAVA network-id 2, sdpMid=1, sdpMLineIndex=1, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.504Z, status=SENDING) 2025-06-12T18:13:52.504+08:00 INFO 26864 --- [boundChannel-56] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:4166415207 1 tcp 1518083839 192.168.56.1 9 typ host tcptype active generation 0 ufrag qAVA network-id 4, sdpMid=1, sdpMLineIndex=1, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.504Z, status=SENDING) 2025-06-12T18:13:52.504+08:00 INFO 26864 --- [boundChannel-61] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2045546136 1 tcp 1518149375 169.254.7.244 9 typ host tcptype active generation 0 ufrag qAVA network-id 2, sdpMid=1, sdpMLineIndex=1, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.504Z, status=SENDING) 2025-06-12T18:13:52.504+08:00 INFO 26864 --- [boundChannel-56] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:4166415207 1 tcp 1518083839 192.168.56.1 9 typ host tcptype active generation 0 ufrag qAVA network-id 4, sdpMid=1, sdpMLineIndex=1, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.504Z, status=SENDING) 2025-06-12T18:13:52.504+08:00 INFO 26864 --- [boundChannel-66] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:3477140095 1 tcp 1518018303 10.1.25.15 9 typ host tcptype active generation 0 ufrag qAVA network-id 5 network-cost 10, sdpMid=1, sdpMLineIndex=1, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.504Z, status=SENDING) 2025-06-12T18:13:52.504+08:00 INFO 26864 --- [boundChannel-66] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:3477140095 1 tcp 1518018303 10.1.25.15 9 typ host tcptype active generation 0 ufrag qAVA network-id 5 network-cost 10, sdpMid=1, sdpMLineIndex=1, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.504Z, status=SENDING) 2025-06-12T18:13:52.508+08:00 INFO 26864 --- [boundChannel-48] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:4166415207 1 tcp 1518083839 192.168.56.1 9 typ host tcptype active generation 0 ufrag qAVA network-id 4, sdpMid=0, sdpMLineIndex=0, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.503Z, status=SENDING) 2025-06-12T18:13:52.509+08:00 INFO 26864 --- [boundChannel-48] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:4166415207 1 tcp 1518083839 192.168.56.1 9 typ host tcptype active generation 0 ufrag qAVA network-id 4, sdpMid=0, sdpMLineIndex=0, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.503Z, status=SENDING) 2025-06-12T18:13:52.573+08:00 INFO 26864 --- [boundChannel-65] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2811386453 1 udp 1685790463 221.238.213.132 44446 typ srflx raddr 10.1.25.15 rport 62568 generation 0 ufrag qAVA network-id 5 network-cost 10, sdpMid=1, sdpMLineIndex=1, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.573Z, status=SENDING) 2025-06-12T18:13:52.573+08:00 INFO 26864 --- [boundChannel-65] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2811386453 1 udp 1685790463 221.238.213.132 44446 typ srflx raddr 10.1.25.15 rport 62568 generation 0 ufrag qAVA network-id 5 network-cost 10, sdpMid=1, sdpMLineIndex=1, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.573Z, status=SENDING) 2025-06-12T18:13:52.573+08:00 INFO 26864 --- [boundChannel-68] c.b.t.controller.ChatinfoController : 收到视频信号: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2811386453 1 udp 1685790463 221.238.213.132 44447 typ srflx raddr 10.1.25.15 rport 62563 generation 0 ufrag qAVA network-id 5 network-cost 10, sdpMid=0, sdpMLineIndex=0, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.573Z, status=SENDING) 2025-06-12T18:13:52.574+08:00 INFO 26864 --- [boundChannel-68] c.b.t.controller.ChatinfoController : 功转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2811386453 1 udp 1685790463 221.238.213.132 44447 typ srflx raddr 10.1.25.15 rport 62563 generation 0 ufrag qAVA network-id 5 network-cost 10, sdpMid=0, sdpMLineIndex=0, usernameFragment=qAVA}, signalType=video, sendtime=2025-06-12T10:13:52.573Z, status=SENDING) 为什么对方将接收不到呢
06-13
ChatInterface.vue:600 开始视频通话,目标用户: 李四 ChatInterface.vue:630 发送offer: {sdp: 'v=0\r\no=- 2539953383768236730 2 IN IP4 127.0.0.1\r\ns…fa45e27a64 70952617-c338-4b85-bd08-f8efa9161fb8\r\n', type: 'offer'} ChatInterface.vue:768 发送视频信号: {type: 'offer', to: '李四', data: {…}, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:6067 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:3053408036 1 udp 2122260223 2.0.0.1 5636…eration 0 ufrag s7hr network-id 3 network-cost 50', sdpMid: '0', sdpMLineIndex: 0, foundation: '3053408036', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:267 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:2279522015 1 udp 2122194687 169.254.111.…364 typ host generation 0 ufrag s7hr network-id 1', sdpMid: '0', sdpMLineIndex: 0, foundation: '2279522015', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:258 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:3755624 1 udp 2122129151 169.254.7.244 56365 typ host generation 0 ufrag s7hr network-id 2', sdpMid: '0', sdpMLineIndex: 0, foundation: '3755624', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:254 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:2172892055 1 udp 2122063615 192.168.56.1…366 typ host generation 0 ufrag s7hr network-id 4', sdpMid: '0', sdpMLineIndex: 0, foundation: '2172892055', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:256 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:208482401 1 udp 2121867007 172.20.10.4 5…eration 0 ufrag s7hr network-id 5 network-cost 10', sdpMid: '0', sdpMLineIndex: 0, foundation: '208482401', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:270 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:505565074 1 udp 2122000639 2408:8411:842…eration 0 ufrag s7hr network-id 6 network-cost 10', sdpMid: '0', sdpMLineIndex: 0, foundation: '505565074', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:298 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:1846669376 1 udp 2121935103 2408:8411:84…eration 0 ufrag s7hr network-id 7 network-cost 10', sdpMid: '0', sdpMLineIndex: 0, foundation: '1846669376', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:298 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:3053408036 1 udp 2122260223 2.0.0.1 5637…eration 0 ufrag s7hr network-id 3 network-cost 50', sdpMid: '1', sdpMLineIndex: 1, foundation: '3053408036', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:267 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:2279522015 1 udp 2122194687 169.254.111.…371 typ host generation 0 ufrag s7hr network-id 1', sdpMid: '1', sdpMLineIndex: 1, foundation: '2279522015', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:258 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:3755624 1 udp 2122129151 169.254.7.244 56372 typ host generation 0 ufrag s7hr network-id 2', sdpMid: '1', sdpMLineIndex: 1, foundation: '3755624', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:254 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:2172892055 1 udp 2122063615 192.168.56.1…373 typ host generation 0 ufrag s7hr network-id 4', sdpMid: '1', sdpMLineIndex: 1, foundation: '2172892055', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:256 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:208482401 1 udp 2121867007 172.20.10.4 5…eration 0 ufrag s7hr network-id 5 network-cost 10', sdpMid: '1', sdpMLineIndex: 1, foundation: '208482401', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:270 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:505565074 1 udp 2122000639 2408:8411:842…eration 0 ufrag s7hr network-id 6 network-cost 10', sdpMid: '1', sdpMLineIndex: 1, foundation: '505565074', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:298 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:1846669376 1 udp 2121935103 2408:8411:84…eration 0 ufrag s7hr network-id 7 network-cost 10', sdpMid: '1', sdpMLineIndex: 1, foundation: '1846669376', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:298 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:3408965052 1 tcp 1518280447 2.0.0.1 9 ty…eration 0 ufrag s7hr network-id 3 network-cost 50', sdpMid: '0', sdpMLineIndex: 0, foundation: '3408965052', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:278 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:4178664519 1 tcp 1518214911 169.254.111.…ptype active generation 0 ufrag s7hr network-id 1', sdpMid: '0', sdpMLineIndex: 0, foundation: '4178664519', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:269 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:2130095344 1 tcp 1518149375 169.254.7.24…ptype active generation 0 ufrag s7hr network-id 2', sdpMid: '0', sdpMLineIndex: 0, foundation: '2130095344', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:268 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:4283191567 1 tcp 1518083839 192.168.56.1…ptype active generation 0 ufrag s7hr network-id 4', sdpMid: '0', sdpMLineIndex: 0, foundation: '4283191567', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:267 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:1923273465 1 tcp 1517887231 172.20.10.4 …eration 0 ufrag s7hr network-id 5 network-cost 10', sdpMid: '0', sdpMLineIndex: 0, foundation: '1923273465', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:282 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:1626189066 1 tcp 1518020863 2408:8411:84…eration 0 ufrag s7hr network-id 6 network-cost 10', sdpMid: '0', sdpMLineIndex: 0, foundation: '1626189066', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:310 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:282989272 1 tcp 1517955327 2408:8411:842…eration 0 ufrag s7hr network-id 7 network-cost 10', sdpMid: '0', sdpMLineIndex: 0, foundation: '282989272', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:308 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:3408965052 1 tcp 1518280447 2.0.0.1 9 ty…eration 0 ufrag s7hr network-id 3 network-cost 50', sdpMid: '1', sdpMLineIndex: 1, foundation: '3408965052', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:278 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:4178664519 1 tcp 1518214911 169.254.111.…ptype active generation 0 ufrag s7hr network-id 1', sdpMid: '1', sdpMLineIndex: 1, foundation: '4178664519', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:269 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:2130095344 1 tcp 1518149375 169.254.7.24…ptype active generation 0 ufrag s7hr network-id 2', sdpMid: '1', sdpMLineIndex: 1, foundation: '2130095344', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:268 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:4283191567 1 tcp 1518083839 192.168.56.1…ptype active generation 0 ufrag s7hr network-id 4', sdpMid: '1', sdpMLineIndex: 1, foundation: '4283191567', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:267 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:1923273465 1 tcp 1517887231 172.20.10.4 …eration 0 ufrag s7hr network-id 5 network-cost 10', sdpMid: '1', sdpMLineIndex: 1, foundation: '1923273465', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:282 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:1626189066 1 tcp 1518020863 2408:8411:84…eration 0 ufrag s7hr network-id 6 network-cost 10', sdpMid: '1', sdpMLineIndex: 1, foundation: '1626189066', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:310 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:282989272 1 tcp 1517955327 2408:8411:842…eration 0 ufrag s7hr network-id 7 network-cost 10', sdpMid: '1', sdpMLineIndex: 1, foundation: '282989272', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:308 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:689241995 1 udp 1685659391 221.197.234.2…eration 0 ufrag s7hr network-id 5 network-cost 10', sdpMid: '0', sdpMLineIndex: 0, foundation: '689241995', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:305 ChatInterface.vue:612 发送ICE候选: RTCIceCandidate {candidate: 'candidate:689241995 1 udp 1685659391 221.197.234.2…eration 0 ufrag s7hr network-id 5 network-cost 10', sdpMid: '1', sdpMLineIndex: 1, foundation: '689241995', component: 'rtp', …} ChatInterface.vue:768 发送视频信号: {type: 'candidate', to: '李四', data: RTCIceCandidate, from: 'tutor001', signalType: 'video'} ChatInterface.vue:471 [STOMP] >>> SEND destination:/app/video.signal content-length:305 ChatInterface.vue:471 [STOMP] Received data ChatInterface.vue:471 [STOMP] <<< MESSAGE content-length:21 message-id:qch01hob-24 subscription:sub-2 content-type:application/json destination:/topic/onlineUsers content-length:21 ChatInterface.vue:533 在线用户列表更新: Proxy(Array) {0: '李四', 1: 'tutor001'} ChatInterface.vue:471 [STOMP] Received data ChatInterface.vue:471 [STOMP] <<< MESSAGE content-length:21 message-id:qch01hob-26 subscription:sub-2 content-type:application/json destination:/topic/onlineUsers content-length:21 ChatInterface.vue:533 在线用户列表更新: Proxy(Array) {0: '李四', 1: 'tutor001'} 2025-06-11T23:58:51.980+08:00 INFO 22336 --- [boundChannel-43] c.b.t.controller.ChatinfoController : 用户上线: tutor001 2025-06-11T23:58:51.980+08:00 INFO 22336 --- [boundChannel-43] c.b.t.controller.ChatinfoController : 广播在线用户列表: [李四, tutor001] 2025-06-11T23:58:54.311+08:00 INFO 22336 --- [nio-8088-exec-6] c.b.t.controller.ChatinfoController : 获取对话记录,用户1: tutor001, 用户2: tutor001, 页码: 1, 每页大小: 1000 2025-06-11T23:58:55.996+08:00 INFO 22336 --- [nio-8088-exec-5] c.b.t.controller.ChatinfoController : 获取对话记录,用户1: tutor001, 用户2: 李四, 页码: 1, 每页大小: 1000 2025-06-11T23:59:03.782+08:00 INFO 22336 --- [nio-8088-exec-4] c.b.t.controller.ChatinfoController : 获取对话记录,用户1: 李四, 用户2: 李四, 页码: 1, 每页大小: 1000 2025-06-11T23:59:05.049+08:00 INFO 22336 --- [nio-8088-exec-1] c.b.t.controller.ChatinfoController : 获取对话记录,用户1: 李四, 用户2: tutor001, 页码: 1, 每页大小: 1000 2025-06-11T23:59:08.429+08:00 INFO 22336 --- [boundChannel-44] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=offer, from=tutor001, to=李四, data={sdp=v=0 o=- 2539953383768236730 2 IN IP4 127.0.0.1 s=- t=0 0 a=group:BUNDLE 0 1 a=extmap-allow-mixed a=msid-semantic: WMS c0dfe989-7fb9-4658-b736-3cfa45e27a64 m=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 13 110 126 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:s7hr a=ice-pwd:9Yog9Jzmg2/xnl280IwF4Kra a=ice-options:trickle a=fingerprint:sha-256 BD:C1:59:7D:8C:4C:59:4E:B1:D2:F4:85:B4:68:B0:A0:07:81:B7:0E:63:2D:21:F8:6E:44:AF:43:29:6E:3B:8A a=setup:actpass a=mid:0 a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid a=sendrecv a=msid:c0dfe989-7fb9-4658-b736-3cfa45e27a64 2c488551-0fbe-41b3-a3b4-0449221db0bc a=rtcp-mux a=rtcp-rsize a=rtpmap:111 opus/48000/2 a=rtcp-fb:111 transport-cc a=fmtp:111 minptime=10;useinbandfec=1 a=rtpmap:63 red/48000/2 a=fmtp:63 111/111 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:13 CN/8000 a=rtpmap:110 telephone-event/48000 a=rtpmap:126 telephone-event/8000 a=ssrc:4262972480 cname:odl6uZlEwpoaFUuB a=ssrc:4262972480 msid:c0dfe989-7fb9-4658-b736-3cfa45e27a64 2c488551-0fbe-41b3-a3b4-0449221db0bc m=video 9 UDP/TLS/RTP/SAVPF 96 97 103 104 107 108 109 114 115 116 117 118 39 40 45 46 98 99 100 101 119 120 123 124 125 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:s7hr a=ice-pwd:9Yog9Jzmg2/xnl280IwF4Kra a=ice-options:trickle a=fingerprint:sha-256 BD:C1:59:7D:8C:4C:59:4E:B1:D2:F4:85:B4:68:B0:A0:07:81:B7:0E:63:2D:21:F8:6E:44:AF:43:29:6E:3B:8A a=setup:actpass a=mid:1 a=extmap:14 urn:ietf:params:rtp-hdrext:toffset a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:13 urn:3gpp:video-orientation a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id a=sendrecv a=msid:c0dfe989-7fb9-4658-b736-3cfa45e27a64 70952617-c338-4b85-bd08-f8efa9161fb8 a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=rtpmap:97 rtx/90000 a=fmtp:97 apt=96 a=rtpmap:103 H264/90000 a=rtcp-fb:103 goog-remb a=rtcp-fb:103 transport-cc a=rtcp-fb:103 ccm fir a=rtcp-fb:103 nack a=rtcp-fb:103 nack pli a=fmtp:103 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f a=rtpmap:104 rtx/90000 a=fmtp:104 apt=103 a=rtpmap:107 H264/90000 a=rtcp-fb:107 goog-remb a=rtcp-fb:107 transport-cc a=rtcp-fb:107 ccm fir a=rtcp-fb:107 nack a=rtcp-fb:107 nack pli a=fmtp:107 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f a=rtpmap:108 rtx/90000 a=fmtp:108 apt=107 a=rtpmap:109 H264/90000 a=rtcp-fb:109 goog-remb a=rtcp-fb:109 transport-cc a=rtcp-fb:109 ccm fir a=rtcp-fb:109 nack a=rtcp-fb:109 nack pli a=fmtp:109 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f a=rtpmap:114 rtx/90000 a=fmtp:114 apt=109 a=rtpmap:115 H264/90000 a=rtcp-fb:115 goog-remb a=rtcp-fb:115 transport-cc a=rtcp-fb:115 ccm fir a=rtcp-fb:115 nack a=rtcp-fb:115 nack pli a=fmtp:115 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f a=rtpmap:116 rtx/90000 a=fmtp:116 apt=115 a=rtpmap:117 H264/90000 a=rtcp-fb:117 goog-remb a=rtcp-fb:117 transport-cc a=rtcp-fb:117 ccm fir a=rtcp-fb:117 nack a=rtcp-fb:117 nack pli a=fmtp:117 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f a=rtpmap:118 rtx/90000 a=fmtp:118 apt=117 a=rtpmap:39 H264/90000 a=rtcp-fb:39 goog-remb a=rtcp-fb:39 transport-cc a=rtcp-fb:39 ccm fir a=rtcp-fb:39 nack a=rtcp-fb:39 nack pli a=fmtp:39 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=4d001f a=rtpmap:40 rtx/90000 a=fmtp:40 apt=39 a=rtpmap:45 AV1/90000 a=rtcp-fb:45 goog-remb a=rtcp-fb:45 transport-cc a=rtcp-fb:45 ccm fir a=rtcp-fb:45 nack a=rtcp-fb:45 nack pli a=fmtp:45 level-idx=5;profile=0;tier=0 a=rtpmap:46 rtx/90000 a=fmtp:46 apt=45 a=rtpmap:98 VP9/90000 a=rtcp-fb:98 goog-remb a=rtcp-fb:98 transport-cc a=rtcp-fb:98 ccm fir a=rtcp-fb:98 nack a=rtcp-fb:98 nack pli a=fmtp:98 profile-id=0 a=rtpmap:99 rtx/90000 a=fmtp:99 apt=98 a=rtpmap:100 VP9/90000 a=rtcp-fb:100 goog-remb a=rtcp-fb:100 transport-cc a=rtcp-fb:100 ccm fir a=rtcp-fb:100 nack a=rtcp-fb:100 nack pli a=fmtp:100 profile-id=2 a=rtpmap:101 rtx/90000 a=fmtp:101 apt=100 a=rtpmap:119 H264/90000 a=rtcp-fb:119 goog-remb a=rtcp-fb:119 transport-cc a=rtcp-fb:119 ccm fir a=rtcp-fb:119 nack a=rtcp-fb:119 nack pli a=fmtp:119 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f a=rtpmap:120 rtx/90000 a=fmtp:120 apt=119 a=rtpmap:123 red/90000 a=rtpmap:124 rtx/90000 a=fmtp:124 apt=123 a=rtpmap:125 ulpfec/90000 a=ssrc-group:FID 874080205 1141213275 a=ssrc:874080205 cname:odl6uZlEwpoaFUuB a=ssrc:874080205 msid:c0dfe989-7fb9-4658-b736-3cfa45e27a64 70952617-c338-4b85-bd08-f8efa9161fb8 a=ssrc:1141213275 cname:odl6uZlEwpoaFUuB a=ssrc:1141213275 msid:c0dfe989-7fb9-4658-b736-3cfa45e27a64 70952617-c338-4b85-bd08-f8efa9161fb8 , type=offer}, signalType=video) 2025-06-11T23:59:08.433+08:00 INFO 22336 --- [boundChannel-80] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:3053408036 1 udp 2122260223 2.0.0.1 56363 typ host generation 0 ufrag s7hr network-id 3 network-cost 50, sdpMid=0, sdpMLineIndex=0, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.434+08:00 INFO 22336 --- [boundChannel-80] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2279522015 1 udp 2122194687 169.254.111.21 56364 typ host generation 0 ufrag s7hr network-id 1, sdpMid=0, sdpMLineIndex=0, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.436+08:00 INFO 22336 --- [boundChannel-80] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:3755624 1 udp 2122129151 169.254.7.244 56365 typ host generation 0 ufrag s7hr network-id 2, sdpMid=0, sdpMLineIndex=0, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.437+08:00 INFO 22336 --- [boundChannel-80] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:208482401 1 udp 2121867007 172.20.10.4 56367 typ host generation 0 ufrag s7hr network-id 5 network-cost 10, sdpMid=0, sdpMLineIndex=0, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.437+08:00 INFO 22336 --- [boundChannel-80] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:505565074 1 udp 2122000639 2408:8411:8421:5f8c:3965:c732:c36d:df63 56368 typ host generation 0 ufrag s7hr network-id 6 network-cost 10, sdpMid=0, sdpMLineIndex=0, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.438+08:00 INFO 22336 --- [boundChannel-47] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2172892055 1 udp 2122063615 192.168.56.1 56366 typ host generation 0 ufrag s7hr network-id 4, sdpMid=0, sdpMLineIndex=0, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.438+08:00 INFO 22336 --- [boundChannel-80] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:1846669376 1 udp 2121935103 2408:8411:8421:5f8c:d23c:14fd:d207:982 56369 typ host generation 0 ufrag s7hr network-id 7 network-cost 10, sdpMid=0, sdpMLineIndex=0, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.438+08:00 INFO 22336 --- [boundChannel-80] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2279522015 1 udp 2122194687 169.254.111.21 56371 typ host generation 0 ufrag s7hr network-id 1, sdpMid=1, sdpMLineIndex=1, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.438+08:00 INFO 22336 --- [boundChannel-47] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:3053408036 1 udp 2122260223 2.0.0.1 56370 typ host generation 0 ufrag s7hr network-id 3 network-cost 50, sdpMid=1, sdpMLineIndex=1, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.439+08:00 INFO 22336 --- [boundChannel-47] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:3755624 1 udp 2122129151 169.254.7.244 56372 typ host generation 0 ufrag s7hr network-id 2, sdpMid=1, sdpMLineIndex=1, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.439+08:00 INFO 22336 --- [boundChannel-48] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2172892055 1 udp 2122063615 192.168.56.1 56373 typ host generation 0 ufrag s7hr network-id 4, sdpMid=1, sdpMLineIndex=1, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.440+08:00 INFO 22336 --- [boundChannel-48] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:505565074 1 udp 2122000639 2408:8411:8421:5f8c:3965:c732:c36d:df63 56375 typ host generation 0 ufrag s7hr network-id 6 network-cost 10, sdpMid=1, sdpMLineIndex=1, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.440+08:00 INFO 22336 --- [boundChannel-47] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:208482401 1 udp 2121867007 172.20.10.4 56374 typ host generation 0 ufrag s7hr network-id 5 network-cost 10, sdpMid=1, sdpMLineIndex=1, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.441+08:00 INFO 22336 --- [boundChannel-48] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:1846669376 1 udp 2121935103 2408:8411:8421:5f8c:d23c:14fd:d207:982 56376 typ host generation 0 ufrag s7hr network-id 7 network-cost 10, sdpMid=1, sdpMLineIndex=1, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.544+08:00 INFO 22336 --- [boundChannel-80] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:3408965052 1 tcp 1518280447 2.0.0.1 9 typ host tcptype active generation 0 ufrag s7hr network-id 3 network-cost 50, sdpMid=0, sdpMLineIndex=0, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.550+08:00 INFO 22336 --- [boundChannel-51] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:4178664519 1 tcp 1518214911 169.254.111.21 9 typ host tcptype active generation 0 ufrag s7hr network-id 1, sdpMid=0, sdpMLineIndex=0, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.552+08:00 INFO 22336 --- [boundChannel-51] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2130095344 1 tcp 1518149375 169.254.7.244 9 typ host tcptype active generation 0 ufrag s7hr network-id 2, sdpMid=0, sdpMLineIndex=0, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.552+08:00 INFO 22336 --- [boundChannel-76] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:4283191567 1 tcp 1518083839 192.168.56.1 9 typ host tcptype active generation 0 ufrag s7hr network-id 4, sdpMid=0, sdpMLineIndex=0, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.554+08:00 INFO 22336 --- [boundChannel-77] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:1923273465 1 tcp 1517887231 172.20.10.4 9 typ host tcptype active generation 0 ufrag s7hr network-id 5 network-cost 10, sdpMid=0, sdpMLineIndex=0, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.554+08:00 INFO 22336 --- [boundChannel-51] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:1626189066 1 tcp 1518020863 2408:8411:8421:5f8c:3965:c732:c36d:df63 9 typ host tcptype active generation 0 ufrag s7hr network-id 6 network-cost 10, sdpMid=0, sdpMLineIndex=0, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.555+08:00 INFO 22336 --- [boundChannel-76] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:282989272 1 tcp 1517955327 2408:8411:8421:5f8c:d23c:14fd:d207:982 9 typ host tcptype active generation 0 ufrag s7hr network-id 7 network-cost 10, sdpMid=0, sdpMLineIndex=0, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.555+08:00 INFO 22336 --- [boundChannel-51] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:4178664519 1 tcp 1518214911 169.254.111.21 9 typ host tcptype active generation 0 ufrag s7hr network-id 1, sdpMid=1, sdpMLineIndex=1, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.555+08:00 INFO 22336 --- [boundChannel-76] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:2130095344 1 tcp 1518149375 169.254.7.244 9 typ host tcptype active generation 0 ufrag s7hr network-id 2, sdpMid=1, sdpMLineIndex=1, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.555+08:00 INFO 22336 --- [boundChannel-51] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:4283191567 1 tcp 1518083839 192.168.56.1 9 typ host tcptype active generation 0 ufrag s7hr network-id 4, sdpMid=1, sdpMLineIndex=1, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.555+08:00 INFO 22336 --- [boundChannel-76] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:1923273465 1 tcp 1517887231 172.20.10.4 9 typ host tcptype active generation 0 ufrag s7hr network-id 5 network-cost 10, sdpMid=1, sdpMLineIndex=1, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.556+08:00 INFO 22336 --- [boundChannel-51] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:1626189066 1 tcp 1518020863 2408:8411:8421:5f8c:3965:c732:c36d:df63 9 typ host tcptype active generation 0 ufrag s7hr network-id 6 network-cost 10, sdpMid=1, sdpMLineIndex=1, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.556+08:00 INFO 22336 --- [boundChannel-77] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:3408965052 1 tcp 1518280447 2.0.0.1 9 typ host tcptype active generation 0 ufrag s7hr network-id 3 network-cost 50, sdpMid=1, sdpMLineIndex=1, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.556+08:00 INFO 22336 --- [boundChannel-51] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:282989272 1 tcp 1517955327 2408:8411:8421:5f8c:d23c:14fd:d207:982 9 typ host tcptype active generation 0 ufrag s7hr network-id 7 network-cost 10, sdpMid=1, sdpMLineIndex=1, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.702+08:00 INFO 22336 --- [boundChannel-48] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:689241995 1 udp 1685659391 221.197.234.205 37680 typ srflx raddr 172.20.10.4 rport 56367 generation 0 ufrag s7hr network-id 5 network-cost 10, sdpMid=0, sdpMLineIndex=0, usernameFragment=s7hr}, signalType=video) 2025-06-11T23:59:08.726+08:00 INFO 22336 --- [boundChannel-52] c.b.t.controller.ChatinfoController : 转发视频信号给 李四: VideoSignal(type=candidate, from=tutor001, to=李四, data={candidate=candidate:689241995 1 udp 1685659391 221.197.234.205 39026 typ srflx raddr 172.20.10.4 rport 56374 generation 0 ufrag s7hr network-id 5 network-cost 10, sdpMid=1, sdpMLineIndex=1, usernameFragment=s7hr}, signalType=video) 家教类型: 全职 怎么对方还是接收不到呢 到底是哪里有问题呢
06-13
评论 109
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xxtaoaooo

谢谢支持!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值