V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Lcys
V2EX  ›  程序员

斗鱼直播是用的啥技术,如何实现一个网页直播间

  •  
  •   Lcys · 2016-01-12 12:51:08 +08:00 · 21282 次点击
    这是一个创建于 2998 天前的主题,其中的信息可能已经有所发展或是发生改变。
    RT.能共享屏幕就行...
    19 条回复    2016-12-27 17:31:15 +08:00
    zhujinliang
        1
    zhujinliang  
       2016-01-12 13:05:15 +08:00 via iPhone   ❤️ 3
    播放基于 http 流, flv 容器。推送基于 rtmp

    整个系统有三个角色,转发服务器,流推送端,客户端
    服务器可用 nginx_rtmp ,推送端请看斗鱼或 b 站直播教程,客户端网页的话要写 flash 或者做 HLS

    根据客户数量规模,服务器可能需要做 CDN 或码率转换
    Lcys
        2
    Lcys  
    OP
       2016-01-12 13:07:24 +08:00
    带宽要求是啥 20M 带宽能支持 10 人在线吗?
    @zhujinliang
    br00k
        3
    br00k  
       2016-01-12 13:09:22 +08:00
    @Lcys 需要上行带宽。看你码率决定是否足够。
    zhujinliang
        4
    zhujinliang  
       2016-01-12 13:11:03 +08:00 via iPhone
    @Lcys 基本够用
    大部分直播码率在 1000kbps 左右
    wbsdty331
        5
    wbsdty331  
       2016-01-12 13:17:01 +08:00
    @zhujinliang 推流以 obs 和 xsplit 为主,斗鱼自己也有个直播助手
    SPACELAN
        6
    SPACELAN  
       2016-01-12 13:22:02 +08:00
    实现一个网页直播间的花还可以用 webrtc
    sgissb1
        7
    sgissb1  
       2016-01-12 13:29:29 +08:00
    @SPACELAN webrtc 其实很不好用,再等几年吧
    youyaochi
        8
    youyaochi  
       2016-01-12 13:41:30 +08:00   ❤️ 1
    xing393939
        9
    xing393939  
       2016-01-12 13:42:21 +08:00   ❤️ 1
    ne6rd
        10
    ne6rd  
       2016-01-12 16:13:47 +08:00
    正好借地问一下,有没有通过网络给直播录像的方法,具体是什么思路呢
    zhujinliang
        11
    zhujinliang  
       2016-01-12 17:25:46 +08:00
    @ne6rd 意思是直接录直播流么?
    斗鱼是对地址做过处理的, flash 上有生成校验码的逻辑,自己没办法构造正确的下载地址(除非反编译 flash )
    有了地址后,可以直接用 ffmpeg 下载,把地址做为输入参数即可,顺便还能直接转格式

    再有就是需要自己处理连接断了后重连的逻辑,需要修正 flv 文件里的时间码
    XhstormR
        12
    XhstormR  
       2016-01-12 17:50:12 +08:00 via Android
    @zhujinliang youtube-dl 支持 douyu
    wupher
        13
    wupher  
       2016-01-12 22:46:10 +08:00
    之前有做过直播。使用 RTMP 协议,通过各种输入端( PC Camera 、 Mobile )获得音视频流,按照 H264, AAC 或者 MP3 进行压缩,然后按 RTMP 传输入视频服务器。 视频服务器再做一些多路转换等工作。将处理后的码流推往 CDN 。很多商业 CDN 直接支持 RTMP 以及 HLS 协议。 客户端( WEB, Flash Player, Mobile Player )获取码流进行播放。

    播现成的录像文件比这个更省事一些,大致流程相似。

    RTMP 本身也是 Adobe 视频协议族中的一员,基于 TCP 协议,多少还是会有延迟。一般的直播也就罢了,如果考虑实时性或者交互性很高,估计还得像 QQ 以及 YY 学习,封装自己的专用协议。
    janxin
        14
    janxin  
       2016-01-12 23:24:13 +08:00
    很多 CDN 都有专门的解决方案,需要现成的话可以直接用一下就好了。各大 CDN (影视网站、阿里云、又拍、七牛之类的)都提供类似服务
    Lcys
        15
    Lcys  
    OP
       2016-01-14 13:49:03 +08:00
    dellch
        16
    dellch  
       2016-03-17 11:53:48 +08:00
    @Lcys 请问用什么技术路线?
    Lcys
        17
    Lcys  
    OP
       2016-04-15 14:23:56 +08:00
    @dellch rtmp
    gehurry
        18
    gehurry  
       2016-12-27 16:44:56 +08:00
    @zhujinliang 请问这个视频直播里面会对她的数据流进行加密么 到了客户端在解密出来播放
    zhujinliang
        19
    zhujinliang  
       2016-12-27 17:31:15 +08:00
    @gehurry
    一般数据流没有加密
    url 可能带有 hash ,需要客户端计算 hash ,服务器判断 hash 是否正确
    你可以打开调试工具,查看网络传输,开始直播,然后找到一个持续增大的 flv 文件,复制链接地址,使用 vlc 之类的播放器可以直接打开这个地址,或者使用 wget 之类的工具下载,播放器也可以播放这段下载的视频
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   946 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 21:30 · PVG 05:30 · LAX 14:30 · JFK 17:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.