直播码率自适应(ABR,adaptive bitrate)是一种面向观众的直播分发技术,可在网络波动时提供流畅且高质量的播放体验。您可以预先配置多个采用不同编码方式、分辨率和码率的子流,播放器会根据观众的实时网络状况自动选择最合适的子流,在播放流畅度和画质之间取得平衡。本文介绍如何在视频直播控制台中添加 ABR 配置。
为什么使用 ABR? ABR 可以帮助解决直播中的典型播放问题,通过更智能、更个性化的直播观看体验提升观众满意度。
自动切换档位,在播放流畅度和画质之间取得平衡
通过创建多个清晰度档位,例如 UHD、HD 和 SD,播放器可以监测每位观众的实时网络状况,并在这些档位之间无缝切换:
当观众网络较差时 :播放器会自动切换到码率更低的流。这样会牺牲部分画质,但可以确保播放流畅,减少卡顿。当观众网络恢复时 :播放器会自动切换回码率更高的流,以提供尽可能好的画质。
这种动态调整方式可为观众带来更稳定、更流畅的观看体验,也让直播更能适应网络波动。降低带宽成本并提升兼容性 降低带宽成本 :在分发前,您可以将源流从标准的 H.264 编码转换为压缩效率更高的 H.265 编码。H.265 具有更高的压缩率,可显著降低带宽消耗和带宽成本。提升播放器兼容性 :如果您的直播使用 H.265 编码,而部分旧版浏览器或设备不支持 H.265,您可以同时提供 H.264 版本,以确保所有观众都能正常观看直播。
工作原理 HLS-ABR 和 RTM-ABR 的工作原理不同:
HLS-ABR :播放器请求 HLS-ABR 地址,获取主 M3U8 文件。主 M3U8 文件会列出各清晰度档位的子流 URL,并标明码率、分辨率等用于播放器选择档位的信息。播放过程中,播放器会监测观众的网络状况,并在不同清晰度档位之间自动切换。RTM-ABR :您只需要使用一个 RTM-ABR 拉流地址,地址中的后缀决定起播清晰度档位。播放过程中,视频直播会根据观众的网络状况自动切换清晰度档位。
前提条件 您已经在同一个域名空间下添加了推流域名和拉流域名。详见添加域名 。
注意事项 费用 :子流由源流转码生成,可使用不同的分辨率和码率,因此会产生转码费用。详见转码计费 。生效时间 :添加、更新或删除 ABR 配置后,您需要等待 3-5 分钟并重新推流,新配置才会生效。协议 :ABR 适用于 HLS 和 RTM 协议。
添加 ABR 配置 登录视频直播控制台 。 在左侧导航栏,选择功能配置 ,再在页面右侧单击直播码率自适应 页签。 从域名空间 下拉列表中选择目标域名空间,并单击添加配置 。 在基础信息 页签下,完成以下配置。配置对所有子流生效。配置项 说明 AppName
指定该配置生效的 AppName,必须与推流地址中的 AppName 一致。例如,如果推流地址为 rtmp://push.example.com/live/test?authinfo,则 AppName 为 live。
AppName 仅支持英文字母(a-z、A-Z)、数字(0-9)、下划线(_)和连字符(-),长度必须为 1-30 个字符。
说明
每个 AppName 只能有一个 ABR 配置。
转码类型
选择转码模式。通过该选项,您可以在转码成本、画质和带宽使用之间进行权衡。
标准转码 :成本更低,采用标准压缩方式,可提供较好的画质,适合优先控制转码费用的场景。极致超清 :采用更高效的压缩方式。与标准转码 相比,该模式可用于节省带宽或提升画质。
节省带宽 :在保持相同画质的情况下使用更低码率,从而显著降低带宽消耗和分发成本。提升画质 :在相同码率下提供更清晰、细节更丰富的画面,获得更好的观看体验。
该模式适合希望以更低码率达到相同画质,或在相同码率下获得更好画质的直播场景。相较于标准转码 ,该模式的转码费用更高。编码方式
选择子流的视频编码方式。
H.264 :兼容性更好,适用于更多设备。H.265 :具有更高的压缩效率,有助于节省带宽。触发方式
根据您对成本和观看体验的侧重点,选择何时开始转码。默认为推流触发 。
推流触发 :在您开始推送源流时立即启动转码。这样可以确保子流立即可用,观众观看时没有起播延迟。但由于直播期间会持续进行转码,因此成本也会更高。适合对即时起播要求较高的重要活动。拉流触发 :仅在第一位观众开始观看直播时才启动转码。这种方式更节省成本,但第一位观众可能会遇到短暂的起播延迟。适合大多数优先考虑成本控制的场景。协议类型
选择一个或多个 ABR 协议类型。
HLS-ABR (.m3u8):适合覆盖广泛观众的场景。iPhone、iPad 等 Apple 设备以及 Safari 浏览器原生播放需要使用该协议。同时,HLS-ABR 在 Android 设备、桌面浏览器和智能电视上也具有良好的兼容性,是较稳妥的选择。如果您需要兼容 Apple 生态,推荐选择 HLS-ABR 。说明
HLS-ABR 地址用于拉取主 M3U8 文件,格式为 http(s)://{拉流域名}/{AppName}/{StreamName}/abr.m3u8?{鉴权信息}。播放器获取主 M3U8 文件后,会继续请求其中的子流 URL,以拉取不同清晰度档位的子流。
如果拉流域名开启了 URL 鉴权 ,系统会根据该域名的 URL 鉴权配置,为每个子流 URL 单独生成鉴权参数,并沿用请求 HLS-ABR 地址时使用的时间戳。这样播放器切换清晰度档位并请求对应子流 URL 时,能够通过鉴权校验,避免播放中断。例如请求地址为 https://pull.example.com/live/test/abr.m3u8?auth_key=1758296819-0-0-9fb836225****c9138541b36d7e1c4a3 时,主 M3U8 文件中的子流 URL 可以是 /live/test_hd/index.m3u8?auth_key=1758296819-0-0-4d96cffa****392aed81afc1e19e9e03 和 /live/test_sd/index.m3u8?auth_key=1758296819-0-0-537e80a2****164e449f1b5ae6978819。其中,时间戳 1758296819 相同,但不同子流 URL 的鉴权值不同。
RTM-ABR (.sdp):适合体育赛事等低延迟场景。RTM-ABR 可提供约 2-3 秒的低延迟,并根据网络波动自动切换清晰度档位,在弱网环境下通过切换到较低清晰度减少卡顿,同时不增加播放延迟。如果您需要在保证播放稳定性的同时实现尽可能低的延迟,推荐选择 RTM-ABR 。复制用户请求参数到子流 URL
开关打开后,系统会将请求 HLS-ABR 地址时携带的原始自定义 URL 参数,全量复制到主 M3U8 文件中的每个子流 URL 中。
例如,请求的 HLS-ABR 地址为 https://pull.example.com/live/test/abr.m3u8?uid=10001&scene=live_home。开关打开后,主 M3U8 文件中的子流 URL 会带上相同参数,例如 /live/test_hd/index.m3u8?uid=10001&scene=live_home 和 /live/test_sd/index.m3u8?uid=10001&scene=live_home。
单击添加子流 ,配置子流信息。您最多可以添加 15 个子流。配置项 说明 档位
选择清晰度档位。您可以直接使用各档位的默认配置,以节省配置时间。默认配置已预设分辨率、码率和帧率,音频设置默认为 AAC。您也可以在选择后继续自定义这些参数。
4K (2160p): 15,000 kbps,60 fps2K (1440p): 10,000 kbps,30 fpsUHD (1080p): 3200 kbps,30 fpsHD (720p): 2048 kbps,30 fpsSD (540p): 1638 kbps,30 fpsLD (360p): 1024 kbps,30 fps说明
如需选择 4K 或 2K ,请创建工单 联系技术支持团队。
子流后缀
为该子流设置唯一后缀,例如 uhd。后缀仅支持英文字母(A-Z、a-z)、数字(0-9)和连字符(-),长度必须为 1-10 个字符。
说明
对于相同的 AppName,确保该后缀与转码配置中使用的后缀不同。
分辨率
设置子流分辨率,单位为 px。取值范围为 [150,4096]。
说明
分辨率超过源流不会提升画质,反而可能带来不必要的处理成本。
码率
设置子流码率,单位为 kbps。码率越高,画面越清晰,但所需带宽也越高。取值范围为 [0,30000]。取值为 0 表示保持与源流相同的码率,适用于源流码率已经满足画质要求的场景。
说明
码率超过源流不会增加画面细节,只会增加带宽成本。
帧率
设置子流帧率,单位为 fps。帧率越高,动态画面越流畅,但需要更多处理资源和带宽。取值范围为 [0,60]。取值为 0 表示保持与源流相同的帧率,适用于源流帧率已经满足画质要求的场景。
说明
帧率超过源流只会生成重复帧,不会让动态画面更流畅,反而可能使画面显得不自然。
音频设置
选择子流的音频处理方式。
AAC: 适合追求最大兼容性的场景。AAC 是行业标准,几乎可以在所有设备和浏览器上播放,有助于覆盖更广泛的观众。Copy 源流: 直接使用源流音频,不进行音频转码。这样可以节省音频转码费用,并保留原始音频质量。适合源流音频格式和质量已满足需求,且希望尽量节省成本的场景。Opus: 采用更高效的压缩方式,在节省带宽的同时仍可提供较好的音频质量。但部分旧设备可能不支持 Opus。转码停止时长
设置在最后一位观众停止拉流 后,转码任务停止前的等待时长。单位为秒。您可以在观看体验和转码成本之间进行权衡。取值如下:
0-300:表示具体等待时长。如果在等待时间内没有新的观众加入,转码任务将停止。 -1:表示无限期 等待。只要仍在直播,转码任务就不会自动停止。 您可以根据直播场景配置等待时长。
优先保证体验 :如果预期观众进出频繁(例如体育赛事或热门活动),建议设置较长等待时间(如 60-180 秒) 。这样大多数新观众都能获得即时播放体验,但无人观看期间的成本会更高。控制成本 :如果观众相对稳定,或您更关注成本,建议设置较短等待时间(如 10-30 秒) 。这样在无人观看时可以更快停止转码任务,减少费用。关键的 24×7 直播流 :仅在必须始终保证即时起播的关键直播场景下设置为 -1 ,并接受持续产生的转码成本。分辨率不超过源流
开启(默认) :防止输出分辨率高于源流分辨率。如果源流分辨率低于您的配置,例如您的配置为 1080p,但源流为 720p,则输出分辨率也会是 720p。这样可以避免画质下降和不必要的成本。关闭 :强制按配置的分辨率输出。仅当播放器或下游服务要求固定分辨率时,才建议关闭。码率不超过源流
开启(默认) :防止输出码率高于源流码率。如果源流码率低于您的配置,例如您的配置为 3200 kbps,但源流为 2048 kbps,则输出码率也会是 2048 kbps。这样可以减少不必要的带宽消耗和成本,因为将码率设置得高于源流并不会提升画质。关闭 :强制按配置的码率输出。仅当播放器或下游服务要求固定码率时,才建议关闭。帧率不超过源流
开启(默认) :防止输出帧率高于源流帧率。如果源流帧率低于您的配置,例如您的配置为 30 fps,但源流为 25 fps,则输出帧率也会是 25 fps。这样可以避免重复帧带来的卡顿,并减少不必要的处理成本。关闭 :强制按配置的帧率输出。仅当播放器或下游服务要求固定帧率时,才建议关闭。
单击确认 保存配置。
您也可以在操作 列中单击添加子流 、编辑 或删除 来为 ABR 配置添加子流、编辑子流配置或删除 ABR 配置或子流。
添加、更新或删除配置后,您需要等待 3-5 分钟并重新推流,新配置才会生效。
后续操作 使用地址生成器 生成 ABR 拉流地址。更多信息,详见地址生成器 。
完成以下配置后,单击生成拉流地址 。
地址类型 :选择拉流地址 。选择域名 :选择添加 ABR 配置时所使用域名空间下的拉流域名。AppName 和 StreamName :填写推流地址中的 AppName 和 StreamName。例如,如果推流地址为 rtmp://push.example.com/live/test?authinfo,则 AppName 为 live,StreamName 为 test。 在 ABR多码率地址 页签中,获取 ABR 拉流地址。HLS-ABR 地址 :.m3u8 地址。RTM-ABR 地址 :选择起播清晰度档位(后缀)后,获取对应的 RTM-ABR 地址。
RTM 地址 :适用于 iOS、Android 拉流 SDK 及其他播放器。RTM Web SDK 播放地址 :适用于 Web 拉流 SDK。该地址会保留原始 ABR 配置,并额外进行以下处理。使用该地址播放时,转码费用按原始 ABR 配置对应的规格计费。
系统会自动检测子流是否包含 B 帧。
如果子流包含 B 帧:系统会通过转码移除 B 帧,其他配置保持原始 ABR 配置不变。 如果子流不包含 B 帧:系统会按原始 ABR 配置进行转码。 系统会自动检测音频编码方式是 AAC 还是 Opus。
如果音频编码方式是 AAC:系统会将音频转码为 Opus,其他配置保持原始 ABR 配置不变。 如果音频编码方式是 Opus:系统会复制源流音频,不进行音频转码,其他配置保持原始 ABR 配置不变。 注意
如果无法获取 RTM Web SDK 播放地址 ,请创建工单 联系技术支持团队。
使用推流地址推送源流。请确保推流域名和拉流域名属于同一域名空间,并且推流地址和拉流地址使用相同的 AppName 和 StreamName。详见地址生成器 。 使用以下任一方式播放。方式 场景 说明 第三方拉流工具 无 SDK 开发资源。 在第三方拉流工具中,配置 ABR 地址,播放直播流。详见对应的官方文档或咨询官方客服。 Web 拉流 SDK 在 Web 浏览器中播放。 集成 Web 拉流 SDK,并在网站或 Web 应用中播放。详见自适应码率(ABR)拉流 。 客户端 SDK
在移动端原生应用中播放。
集成客户端 SDK,并在移动端应用中播放。详见:
视频直播控制台
开发或测试阶段快速预览和调试。
在控制台 Web 拉流 页面输入 HTTPS 格式的 HLS-ABR 或 RTM-ABR 地址,快速验证播放效果。详见 Web 拉流 。
FAQ
为什么新的 ABR 配置没有生效? 添加、更新或删除 ABR 配置后,您需要等待 3-5 分钟并重新推流,新配置才会生效。
第一位观看直播的观众会遇到起播延迟,如何解决? 这通常是因为触发方式 设置为拉流触发 ,系统会在第一位观众开始观看时才启动转码。若要消除起播延迟,请将触发方式改为推流触发 。这样在源流开始直播时就会立即启动转码,从而确保所有观众都能即时播放。即使没有观众观看,只要源流仍在直播,该选项也会持续产生费用。
如何更好地控制转码成本? 如需优化成本,建议考虑以下方式:
使用拉流触发 :将触发方式 保持为拉流触发 ,这样只有在有人观看时才会产生转码费用。复制源流音频 :将音频设置 设为 Copy 源流 。这样可以避免音频转码费用,同时保留原始音频质量。选择标准转码模式 :将转码类型 设为标准转码 。这是成本更低的方案,适合优先控制转码成本的场景。避免输出规格高于源流 :保持各项不超过源流 开关为开启状态。这样可以避免浪费资源,因为将分辨率、码率或帧率设置为高于源流并不会提升画质。
ABR 和转码配置应该如何选择? 请选择最符合您的直播协议和观看体验目标的配置。两者的关键区别在于播放器是否能够在不同清晰度档位之间自动切换。
ABR :如果您希望提供自动调节的观看体验,可以使用 ABR 配置。该功能会提供多个清晰度档位,播放器会根据观众的网络状况自动切换,从而在尽可能好的画质下保持播放流畅。转码 :在以下场景中使用转码配置:
更广泛的协议支持 :当您需要使用 ABR 功能不支持的协议进行直播时,例如 RTMP 协议。手动选择清晰度 :当您希望为每个清晰度提供单独的拉流地址,并在播放器中实现手动清晰度选择,让观众自行选择分辨率时。
转码能提升模糊源流的画质吗? 不能。转码无法凭空增加源流中不存在的细节。如果您的源流本身模糊或画质较差,即使将子流设置为更高的分辨率、码率或帧率,输出的子流仍然会显得模糊。
为什么 HLS-ABR 地址播放一会儿后就停止了? 如果您的业务依赖 HLS-ABR 地址中的自定义 URL 参数(例如 uid 或 scene)完成校验,播放中断可能是因为这些参数没有传递到子流请求中。若要解决此问题,请开启复制用户请求参数到子流 URL 。开启后,系统会将请求 HLS-ABR 地址时携带的原始自定义 URL 参数全量复制到每个子流 URL 中,有助于避免因参数缺失导致播放中断。
应该选择 HLS-ABR 还是 RTM-ABR? 如果您希望获得最广泛的兼容性,选择 HLS-ABR 。如果您需要兼容 Apple 生态,或者不确定该如何选择,推荐使用 HLS-ABR。 如果您需要体育赛事等低延迟场景,选择 RTM-ABR 。如果目标是在保证播放稳定性的同时实现尽可能低的延迟,推荐使用 RTM-ABR。