视频直播 Live
视频直播 Live
- 最新动态
- 功能总览
- 服务公告
- 产品介绍
- 产品彩页
- 计费说明
- 云直播
- 媒体直播
- 最佳实践
- 云直播API参考
- 媒体直播API参考
- 云直播服务端SDK参考
- 低时延客户端SDK参考
- 场景代码示例
-
常见问题
- 高频问题导航
- 产品咨询
-
计费购买
- 点播的流量包直播服务能用吗?
- 如何查看直播套餐包的使用详情?
- 直播套餐包是否支持退订?
- 直播套餐包使用完之后会被停服吗?
- 购买了直播CDN出流包,为什么还会从账户余额扣费?
- 购买云直播转码套餐后,产生的转码费用未从套餐包中抵扣?
- 如何估算视频直播的流量消耗?
- 云直播录制需要收取哪些费用?
- 视频直播有哪些计费项?如何知道自己需要支付哪些费用?
- 如何查看直播按需资源的使用量和消费金额?
- 如何修改直播服务的计费方式?
- 不使用时是否需要停用或删除直播服务?
- 直播流量计费是按下行流量还是上行流量?
- 为什么账户欠费后仍一直产生直播费用?
- 视频直播服务的Key防盗链功能是否收费?
- 云直播转码是如何计费的?
- 如何知道账户是否欠费?
- 日峰值带宽是指上行带宽还是下行带宽?
- 为什么每月1号都会扣除一笔录制费用?
-
域名管理
- 什么是ICP备案?
- ICP备案是否是必须的?
- 如何进行ICP备案?
- 为什么要进行资质审核?审核未通过有什么影响?
- 域名已备案,如何在直播中添加域名?
- 直播服务许可证是否是必须的?如何办理?
- 添加域名时,提示“ICP编号不存在”怎么办?
- 域名管理中的消息订阅界面为什么操作不了?
- 一个租户最多可以添加多少个直播域名?
- 添加的播放域名和推流域名有什么要求?
- 域名管理界面的CNAME的作用是什么?
- 添加域名时,提示“添加失败,用户处于删除状态”怎么办?
- 为什么域名状态会从“正常”变为“配置中”?
- 配置CNAME域名解析,提示冲突?
- 播放域名和推流域名可以为二级域名吗?
- 一个域名是否可以同时添加在多个区域的直播服务中?
- 如何验证直播域名是否启动加速?
- 欠费后,域名是否会被清除掉?
- 更改了推拉流配置后,需要断流多长时间才能重新推流生效?
- 为什么直播控制台创建域名后,我的资源中未展示?
- 为什么直播控制台删除域名后,我的资源中仍展示?
- 如何查看我的资源?
-
直播录制
- 直播录制支持什么录制格式和播放格式?
- 直播录制后,为什么在控制台和回调信息中无播放地址?
- 是否支持直播录制存储至OBS桶中?
- 直播录制周期最多支持录制多长时间?
- 是否支持为每个直播流配置录制模板?
- 直播录制是否会录制转码流?
- 直播录制支持的ts分片大小是多少?
- 一次直播录制会生成几个录制文件?
- 已经删除录制规则,为什么还会生成录制文件?
- 为什么直播推流未中断,录制文件分成了两个?
- 直播录制后,如何获取录制文件地址?
- 是否支持通过调用API进行直播录制?
- 配置了录制至OBS模板,为什么未生成录制文件?
- 录制至OBS模板中,流名称是否支持通配符?
- 如何删除录制文件?
- 直播录制是否支持按需启停?
- 直播录制为什么无法收到RECORD_FILE_COMPLETE回调?
- 直播录制流名StreamName是否支持正则表达式的配置?
- 为什么直播录制生成的download_url无法下载视频?
- 修改了录制规则及文件存储路径,为什么没有生效?
- 直播中断流多次,可以录制成一个文件吗?
- 直播转码
- 直播截图
- 直播安全
- 直播推流
- 直播播放
- 直播回调
- API使用
- 统计分析
- 第三方工具使用
- 故障排除
- 视频帮助
- 文档下载
- 通用参考
本文导读
链接复制成功!
音频受限处理
什么是音频受限
新页面加载后立即自动播放音频(或带有音轨的视频)可能会让用户感到意外,所以主流浏览器对音频自动播放有音频受限策略。自动播放音频的场景下,因为可能与页面无交互,会触发音频受限策略。非自动播放或静音播放场景,音频则不受限。具体表现在,如果audio或video标签携带autoplay属性,页面加载完后,不会自动播放;如果强行调用play接口,会报类似“Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first”的错误。
HTML:
<video src="/video_with_audio.mp4" autoplay></video>
JS:
videoElement.play();
直接在新页面自动播放带有音频的视频,会受到浏览器的阻止。
通常浏览器期望与用户交互后,再允许自动播放音频。如:通过单击当前页面的播放按钮,去调用play接口。
PlayButton.addEventListener('click', () => { videoElement.play(); })
音频受限引发的LLL SDK报错信息
使用LLL SDK自动播放低延时直播流,且非静音播放时:
const options = { elementId: 'elementId', autoPlay: true, } startPlayPromise = playClient.startPlay(streamUrl, options)
设置autoPlay为true。如果不设置autoPlay,也会默认为true。当音频受限时,浏览器控制台报错如下所示:
[HWLLS] [error] [HLLSTrack] [play audio failed: ["code": 51000000, "message": "the user didn't interact with the document first, please trigger by gesture."] ] ### lll play SDK occur error: {"errCode":51000000,"errDesc":"the user didn't interact with the document first, please trigger by gesture."}
同时如果监听Error,会报51000000错误码,如下所示:
playClient.on('Error', (resp) => { if (resp.errCode === 51000000) { //音频受限报错 } })
最佳实践
手动播放
LLL SDK静音播放调用示例如下:
const options = { elementId: 'elementId', autoPlay: false } startPlayPromise = playClient.startPlay(streamUrl, options)
设置播放参数autoPlay为false,添加播放按钮让用户在点击的时候才开始播放。
图1 样例效果图
![](https://support.huaweicloud.com/llsdk-live/zh-cn_image_0000002050365790.png)
自动播放失败监听
先自动播放,且不静音播放:
const options = { elementId: 'elementId', autoPlay: true, } startPlayPromise = playClient.startPlay(streamUrl, options)
遇到音频受限时,监听错误码如下所示:
playClient.on('Error', (resp) => { if (resp.errCode === 51000000) { //音频受限报错 //界面添加取消静音按钮 } })
此时即使音频受限,也会先静音播放视频。如果用户想听声音,可以单击“点击取消静音”按钮播放音频。对于不受限的场景,则会直接同步播放音频和视频。
图2 样例效果图1
![](https://support.huaweicloud.com/llsdk-live/zh-cn_image_0000001979961674.png)
图3 样例效果图2
![](https://support.huaweicloud.com/llsdk-live/zh-cn_image_0000001979154394.png)
父主题: 最佳实践