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

使用 RTMP 直播有什么降低延迟的好办法吗?

  •  
  •   RicardoY · 2020-07-05 18:09:15 +08:00 · 3357 次点击
    这是一个创建于 1603 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在是想搞一个方案,解决一下 vtb 线上多人联动的时候,只有自己的虚拟形象可以动,联动对象的虚拟形象没法动的问题。

    初步的想法是在主播把纯立绘的视频流推到 RTMP server 上,然后其他人分别订阅这个流,在 obs 里面混合一下,推到直播服务器上。

    之前进行了一下简单的测试,在使用 obs 进行推流(码率 8000kbps,GOP 设置为 1s,preset=ultrafast,profile=baseline,tune=zerolatency,缓冲大小为 0), ffplay 作为播放器(不使用 buffer)的情况下,延迟大概在 800ms 左右,网络环境是(北京电信->腾讯云北京->北京电信)

    请问有什么可以把延迟降低到 200ms 一下的办法吗,同时还希望网络情况波动的时候不要出现太过严重的卡顿情况。

    6 条回复    2020-08-23 22:40:24 +08:00
    liuxu
        1
    liuxu  
       2020-07-05 18:23:15 +08:00   ❤️ 1
    低延迟用 webrtc 方案
    zhs227
        2
    zhs227  
       2020-07-05 19:21:08 +08:00   ❤️ 3
    都用上 RTMP 了,还怎么降低延迟。TCP 方案是没办法降低延迟的,只会增加延迟。
    选 WebRTC 靠谱一点。编码和解码环节其实都会引入一帧以上的延迟,200ms 还是一个过于理想的值,屏到屏只有网络好的情况下才能达到。GOP 值太小,建议设为 2S 或 3S,1S 会造成传送的速率过高。
    8000kbps 有点过高,你这个测试是不经过 CDN 的,如果是订阅的人多于一台机器带宽的承载量,必然要引入 CDN 分发,也会加入延迟。
    图形传送基于分组域的解决方案,除非传送的数据量特别少,或者只走局域网,否则基本上没啥办法做到百毫秒级别的延迟。
    hanguofu
        3
    hanguofu  
       2020-07-05 20:41:47 +08:00 via Android
    直接购买 tx 的推送服务可以满足要求吗?
    piaoliangkb
        4
    piaoliangkb  
       2020-08-23 17:22:04 +08:00
    请问 rtmp server + ffplay 是如何测出延迟的呀?
    RicardoY
        5
    RicardoY  
    OP
       2020-08-23 20:44:48 +08:00 via iPhone
    @piaoliangkb 我整的很简单 推一个带毫秒时钟的流 然后截图看时间差
    piaoliangkb
        6
    piaoliangkb  
       2020-08-23 22:40:24 +08:00
    @RicardoY 谢谢哈~我也去尝试下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5803 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 06:05 · PVG 14:05 · LAX 22:05 · JFK 01:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.