V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
black11black
V2EX  ›  问与答

直播用的弹幕姬都是怎么实现的?

  •  
  •   black11black · 2020-10-27 10:25:04 +08:00 · 2247 次点击
    这是一个创建于 1490 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,在 B 站 DD 的时候主播都用弹幕机,把弹幕转成文字放在 obs 里,弹幕机是怎么获取到直播弹幕的呢?

    按最基础的爬虫来讲,每一次爬取都是一次独立的请求和返回,似乎并不适合用快速重复请求来实现这种需求,能不能请求到另说,之后还要再做排序,除杂什么的怎么看也不太合适。

    按照弹幕机的表现来看最适合的是 ws,也就是如果通过某种方式爬虫能接管浏览器的 ws 的话,每次有弹幕刷新,都会作为一种事件被推送给后端,这样就很舒服。

    8 条回复    2020-10-27 23:07:43 +08:00
    ysc3839
        1
    ysc3839  
       2020-10-27 10:57:36 +08:00 via Android
    你这问的好像不是直播弹幕程序是怎么实现的,而是弹幕系统的接口。
    没记错的话,大多数直播网站的弹幕都是用 WebSocket 的。
    woodie1994
        2
    woodie1994  
       2020-10-27 10:58:58 +08:00
    像斗鱼这些好像有提供 api 获取弹幕的
    starzh
        3
    starzh  
       2020-10-27 11:04:14 +08:00
    locoz
        4
    locoz  
       2020-10-27 11:12:02 +08:00 via Android   ❤️ 1
    爬虫并不仅限于“每一次爬取都是一次独立的请求和返回”,实际上爬虫是使用与别人客户端同样的通信协议去进行通信,所以不管是 HTTP 、WS 还是纯粹基于 TCP 、UDP 搞的自定义协议,爬虫都可以进行“爬取”这个操作…本质上来讲爬虫只是个特殊的客户端而已。
    然后是弹幕,弹幕一般分两种做法,一种是基于 TCP ( B 站以前是)、一种是基于 WS ( B 站现在是),都是依靠服务端推送的,爬虫(弹幕机)只需要同样模拟发送请求、建立连接,然后正常获取到弹幕并按照特定方式解析就行了(一般会做压缩)。
    当然 HTTP 也不是不能获取到弹幕,像 B 站的直播间在打开时是会加载一下最近十几条弹幕的,那个就是走的 HTTP 。
    glaucus
        5
    glaucus  
       2020-10-27 11:13:56 +08:00
    斗鱼是有开放弹幕接口的,估计 B 站也有吧
    locoz
        6
    locoz  
       2020-10-27 11:14:07 +08:00 via Android
    说白了,怎么实现得要看平台方的后端怎么实现,别人用啥爬虫就用啥。
    MagnifierSun
        7
    MagnifierSun  
       2020-10-27 11:57:14 +08:00
    不是爬虫,而是你也用 ws 客户端去连接 B 站的 ws 服务端,然后校验 token 啥的,最后建立连接就能持续不断收到弹幕了
    lc1450
        8
    lc1450  
       2020-10-27 23:07:43 +08:00 via Android
    整个 websocket 客户端 gayhub 一搜就有现成的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1029 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 20:11 · PVG 04:11 · LAX 12:11 · JFK 15:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.