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

关于视频直播方案的一个问题: iOS 端 H5 页面, 时延很大呀, 20-40s 不等, 有什么好的解决方案吗?

  •  1
     
  •   wzw · 2020-02-19 12:04:21 +08:00 · 2577 次点击
    这是一个创建于 1740 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在做一个很小众的教育视频直播

    Android 直接用 Aliplayer , 播放 flv 格式的流, 时延 3-6s, 还可以

    但是 iOS 只能播放 m3u8, 时延很大呀, 20-40s 不等, 有什么好的解决方案吗?

    目前是 H5 页面上实现的.

    看看有什么好的方案, 目前查到的资料来看, 要么 APP(不擅长) 要么小程序了....

    16 条回复    2020-02-20 07:46:22 +08:00
    fgodt
        1
    fgodt  
       2020-02-19 12:12:11 +08:00 via Android
    wzw
        2
    wzw  
    OP
       2020-02-19 12:21:19 +08:00
    @fgodt #1 这个还用不到呀,,, 还在云里雾里
    Lax
        3
    Lax  
       2020-02-19 14:06:39 +08:00
    RTMP 能做到 1s 之内,m3u8 大概 3-5s 之内就不错了
    wzw
        4
    wzw  
    OP
       2020-02-19 14:15:55 +08:00
    @Lax #3 https://help.aliyun.com/document_detail/57041.html

    m3u8 大概 3-5s 之内, 不太可能吧, 我用阿里云来弄,大约 20-30s, 而且我工单问过了, 的确这样
    Lax
        5
    Lax  
       2020-02-19 15:02:11 +08:00
    @wzw
    要改分片长度和时长。HLS 可以调整参数来降低延时,但是也会牺牲流畅性。如果不是内网或者优化过的网络条件下,是很难完美降低延时的。
    阿里云文档里提到用的分片长度 5 秒,延时肯定在 15s 以外了。
    RTMP 延时低一些,小程序的视频播放器好像也能播放 [不确定]
    观看人数不多的话可以考虑用 WebRTC,延时一般都比较低
    qiayue
        6
    qiayue  
       2020-02-19 15:08:48 +08:00
    jsmpeg 可以做到毫秒级别延时
    wzw
        7
    wzw  
    OP
       2020-02-19 16:14:02 +08:00
    @qiayue #6 阿里云不支持 jsmpeg 呀, 难道自己搭建? 我去了解一下 jsmpeg
    yikyo
        8
    yikyo  
       2020-02-19 17:10:32 +08:00
    webrtc 有系统兼容性问题,我司用声网的产品,他们做培训的时候提出在低系统版本时使用 js 来解码,不知道现在有没有实际产品。你可以找声网的咨询一下,但估计不满足你这边的需求,他们是整套方案。
    laoyu
        9
    laoyu  
       2020-02-19 17:15:05 +08:00 via iPhone
    是流本身有延迟还是放在 HTML 5 播放器上出现的延迟。你看下 DPlayer
    pperlee
        10
    pperlee  
       2020-02-19 17:32:42 +08:00
    我不太清楚阿里云是哪个流服务器,wowza 还是其他?每个应该都有参数设置的,需要自定义一下,20s 确实比较长了,一般控制在 6s 就好,如果你想更流畅,不妨考虑 webrtc 方式。hls 方式在 chrome 上面不兼容,不是最优的。
    wzw
        11
    wzw  
    OP
       2020-02-19 17:53:12 +08:00
    @pperlee #10 目前已经设置了最低了, 请看图
    https://i.loli.net/2020/02/19/5L7XSNIyaq4mitZ.png

    @laoyu #9 我直接用 iina/vlc 播放器尝试, 发现时延大


    @yikyo #8 声网明天去了解下, 一开始就想到 阿里云了
    zhs227
        12
    zhs227  
       2020-02-19 18:15:11 +08:00
    有客户端的情况下不要尝试播 HLS,直播的 HLS 延迟会让人想吐。没有客户端的情况下,考虑微信小程序中的 RTMP 播放能力
    pperlee
        13
    pperlee  
       2020-02-19 18:26:28 +08:00
    你设置的只是播放的延时,按要求设置 2s 就好,但是除了播放,还有推流响应的延时、视频帧率的运算卡顿等,都会造成延时加大,你需要各方面都均衡设置,还有推流时要保证你的网络状况良好。检查网络,降低帧率试试。
    coolwind1981
        14
    coolwind1981  
       2020-02-19 19:56:04 +08:00 via Android
    试一试 2 秒或 1 秒一个 ts 切片(关键帧 2 秒或 1 秒一个), 总共三个索引,但不知道会不会顺畅
    ajaxfunction
        15
    ajaxfunction  
       2020-02-19 20:36:56 +08:00
    无解,我这边尝试过,只有 rtmp 推流拉流可以做到延时 4 秒以下,
    H5 方案在 10 秒左右,如果观看人数多 延时会在 15 秒左右
    wzw
        16
    wzw  
    OP
       2020-02-20 07:46:22 +08:00
    @ajaxfunction #15 正在尝试 jsmpeg
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1604 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:45 · PVG 00:45 · LAX 08:45 · JFK 11:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.