全部产品
Search
文档中心

视频直播:超低延时直播常见问题

更新时间:Nov 29, 2023

本文主要介绍使用超低延时直播中遇到的常见问题。

对于同一场直播,可以同时使用标准直播和超低延时直播进行观看吗?

可以。针对同一场直播会分别生成标准直播和超低延时直播的播放地址用于观看。例如,标准直播RTMP使用rtmp://${播放域名}/AppName/StreamName?${鉴权串}播放,超低延时直播使用artc://${播放域名}/AppName/StreamName?${鉴权串播放}

可以通过自研SDK的方式接入超低延时直播吗?

可以。您需要遵循阿里云的信令协议规范,具体操作,请参见WebRTC标准接入GRTN信令协议规范

超低延时直播Web端推播流,无法播放?

由于原生浏览器对WebRTC的限制,您在使用Web RTS SDK时存在以下限制:

  • 视频不支持B帧(会出现画面跳跃)。

  • 音频不支持AAC编码(会出现噪音)。

当您无法控制直播推流输入情况时,可以在视频直播控制台超低延时直播界面,打开H5播放自动转码开关,去除B帧和AAC编码。

说明
  • 超低延时直播开关开启后,H5播放自动转码开关才可见。

  • H5播放自动转码开关开启后,系统会自动进行去B帧和OPUS转码,无需配置RTS转码模板。若您已经配置了RTS转码模板,H5播放自动转码和RTS转码模板会同时生效,但不会产生两份转码费用。

超低延时直播延时高?

超低延时直播提供毫秒级的直播延时体验,若您的延时明显多于1秒,可以通过以下2个维度进行定位:

  • 维度一:定位推流侧的网络状态。

    登录视频直播控制台,在左侧导航栏选择数据监控 > 实时监控

    输入推流对应的AppName和StreamName,观察推流帧率、码率、时间戳等信息是否出现异常

  • 维度二:获取RTS TraceID提交工单联系技术人员定位。

    若发现推流侧的帧率、码率、时间戳均无异常,且延时高、卡顿的现象仍然存在。请在播放器Demo中进行播放,获取本次播放的TraceID,具体操作方法,请参见Demo播放获取RTS TraceID,并提交工单联系阿里云技术支持。关于如何提交工单,请参见联系我们

Web端使用超低延时推流时,HLS和FLV播放没有声音?

在Web端使用RTS推流时音频编码为OPUS,无法直接使用FLV和HLS进行播放。 若您有FLV和HLS的播放需求,建议使用RTMP推流,RTS播放,即可同时用于播放FLV和HLS。

使用H.265推流时,无法在浏览器播放超低延时直播的视频?

浏览器原生WebRTC不支持H.265,您需要确保推流是H.264,或者将H.265在阿里云转码为H.264进行播放。

超低延时直播兼容哪些浏览器?

超低延时直播兼容的浏览器类型,请参见浏览器要求

如何解决部分安卓手机QQ浏览器无法推拉流?

部分安卓手机(如华为P20、vivo iQOO)安装QQ浏览器后首次打开可能无法拉起X5内核,导致WebRTC兼容问题推拉流失败(报错:Failed to execute 'setRemoteDescription' on 'RTCPeerConnection’)。如果遇到该场景请按照以下操作确保X5内核初始化:
  1. 连接WIFI网络。
  2. 刷新当前页面并等待大约30秒。
  3. 重启浏览器,再次访问页面即可恢复正常。

为什么部分浏览器不支持Web RTS SDK?

对于Web RTS SDK暂不支持的浏览器,主要有以下原因:
  • 浏览器未实现WebRTC相关API,或实现有缺陷(如IE浏览器、UC浏览器)。
  • 浏览器支持WebRTC API,但不支持H.264编码,仅支持VP8(如部分安卓手机系统自带浏览器)。

为什么Safari/iOS报错:Failed to set remote answer sdp

如果遇到如下报错:
Failed to set remote answer sdp: The order of m-lines in answer doesn't match order in offer.

是因为您集成了其他WebRTC相关SDK,其中的webrtc-adapter冲突导致的,为避免此冲突,RTS SDK提供了一个不包含adapter的版本,您可以在已经引入同类SDK的情况下使用此版本(从2.2.4版本开始支持)。

  • 如果使用JS方式引入SDK,则只需替换成2.2.4版本。
  • 如果使用NPM方式引入SDK,则使用以下方式引入:
    import { AliRTS } from 'aliyun-rts-sdk/dist/aliyun-rts-sdk-without-adapter.js';
    在 TypeScript 项目中,为了获得和普通版本一样的类型支持,需要您进行模块声明:
    // 项目根目录新建文件 typings.d.ts
    declare module 'aliyun-rts-sdk/dist/aliyun-rts-sdk-without-adapter.js' {
      import {AliRTS} from 'aliyun-rts-sdk';
      export {AliRTS}
    }