直播系统项目
直播系统分享
- 目录
- 交互图
- 数据流程
- 爬虫
- 解析
- 解析意图后处理
- 组装
- 任务调度
- TCP连接
- U3D展示
- 推流
- 后台控制
目录
交互图
数据流程
爬虫
网页结构

方法1
直接获取html的元素
chat_items = self.driver.find_elements_by_css_selector('.chat-item') # 获取弹幕for chat_item in chat_items[-7:]:chat_item_class_attribute = chat_item.get_attribute('class')if 'danmaku' in chat_item_class_attribute:ts = int(chat_item.get_attribute('data-ts')) # 时间戳uame = chat_item.get_attribute('data-uname') # 用户名danmaku = chat_item.get_attribute('data-danmaku') # 弹幕elif 'welcome-msg' in chat_item_class_attribute:username = chat_item.find_element_by_css_selector('span.username').text # 进入直播间gift_items = self.driver.find_elements_by_css_selector('.penury-gift-item') # 获取礼物for gift_item in gift_items:username = gift_item.find_element_by_css_selector('span.username').text # 用户名action = gift_item.find_element_by_css_selector('span.action').text # 送礼物
方法2
js事件监听
chrome_driver.execute_script('''document.getElementById("chat-history-list").addEventListener("DOMNodeInserted", function(e) {$.ajax({url: "https://127.0.0.1:8010/", type: "post", data: e.target.outerHTML, contentType:"text/html; charset=utf-8"})}); # 监控弹幕消息$('.bilibili-live-player-video-stream')[0].pause(); # 视频暂停控制document.getElementById("penury-gift-msg").addEventListener("DOMNodeInserted", function(e) {$.ajax({url: "https://127.0.0.1:8010/", type: "post", data: e.target.outerHTML, contentType:"text/html; charset=utf-8"})}); # 监控礼物信息''')
解析
1.意图
| 意图 |
|---|
| 闲聊(配置语料,闲聊服务,topic_qa) |
| 唱歌 |
| 跳舞 |
| 答题 |
| 投票 |
| 占卜 |
| 奖励 |
| stop |
| 兜底 |
2.正则解析意图
3.获取参数
问:你叫什么? 答:XXX (获取的参数就是这个回答)
问:跳晴天 (获取歌名)
问:唱自己的歌(随机挑选自己的歌)
解析意图后处理
闲聊意图:文字 + 音频 + 动作
跳舞意图:音频 + 音乐对应的舞蹈动作
唱歌意图:特定的sound资源 + 对应的舞蹈动作
文字音频获取: tts接口
音乐资源获取: c2的音乐接口
动作资源获取: 动作接口,动作的拼接
组装
组装协议,准备发送给U3D做相对应的展示
任务调度
设置了多个队列
- 优先队列
- 后台输入队列
- 定时任务队列
- 一般消息的队列
优先队列 > 后台输入 > 定时任务 > 一般
TCP连接
与U3D程序建立连接,传输数据
U3D展示
文字显示,动作展示,播放音频
推流
- obs推流
- 虎牙直播
- 淘宝直播
把U3D的输出的内容,推送至直播平台
obs操作步骤
后台控制
后台控制页面,前端编写内容,组装数据结构,入队列,发送消息给U3D

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
