直播截图
视频直播提供了截图功能,支持按配置截图模板在推流过程中截取直播画面,并存储在OBS桶中。一个推流域名下可以配置多个不同AppName的截图模板,即当推流开始时,启动直播截图功能,其中与推流地址中的AppName相同的截图模板生效。
截图流程
直播服务截图模板的配置流程,如图1所示。
注意事项
- 直播服务所在区域与存储截图的OBS桶需在同一区域。
- 推荐将OBS桶设置为私有桶,效果如下所示:
- 如果将OBS桶设置为私有桶,必须添加鉴权信息,才能访问并下载OBS截图文件。鉴权信息可参考OBS生成带授权信息的URL文档生成。
- 如果将OBS桶设置为公开桶,则可直接访问并下载OBS截图文件。
- 一个域名可配置多个截图模板,与推流地址中的AppName相同的截图模板生效。
- 暂只支持截图生成JPG格式的图片文件。
- 在“亚太-曼谷”区域,完成模板配置后需提交工单申请配置审核,审核通过后截图配置才生效。
- 华为云视频直播服务计划于2024年8月15日,下线截图回调地址携带鉴权信息功能,届时截图回调地址将不再携带鉴权信息。
费用说明
步骤一:创建桶(可选)
若您还未在OBS服务中创建用于存储文件的桶,或者您需要新创建桶用于存储直播截图文件,请参见OBS帮助中心创建与使用的直播服务同一区域的OBS桶。否则,请直接跳转到步骤二:OBS桶授权。
步骤二:OBS桶授权
OBS桶创建后,您需要按照如下步骤在直播服务中对相关的桶进行授权,允许直播服务将截图存储在对应的OBS桶中。
OBS桶授权完成后,视频直播服务可以正常访问该OBS桶。请确保该桶仅处理直播相关业务,切勿在桶中存放涉密文件。
- 登录视频直播控制台。
- 在左侧导航树中选择“云资源授权”,进入桶授权页面。
- 在“直播授权”页签,选择需要存储直播截图的OBS桶,单击“授权”即可。
图2 云资源授权
步骤三:配置直播截图
OBS授权成功后,您可以开始配置直播截图模板。
- 登录视频直播控制台。
- 在左侧导航栏中,选择 ,进入域名管理页面。
- 在需要进行直播截图的推流域名行,单击“管理”。
- 在左侧导航栏中,选择“模板配置 > 截图配置”。
- 单击“新建截图”,界面右侧弹出“截图配置”对话框。
图3 配置直播截图模板
具体参数配置说明请参见表1。
表1 截图参数配置 参数名
描述
应用名
应用名称,默认为“live”,您也可以根据实际需求进行自定义,支持大小写字母、数字、下划线(_)中划线(-)。
存储位置
直播截图存储在OBS服务。
存储-桶
存储直播截图的OBS桶。
存储-路径
OBS桶存储直播截图的路径。
截图频率
截图频率,单位为秒。
取值范围:5-3600。
存储方式
存储截图文件的模式。
- 全保存模式:截图文件名中含时间戳,每条流的所有截图文件均会保存在存储对象里。示例:snapshot/{domain}/{app_name}/{stream_name}/{UnixTimestamp}.jpg
- 覆盖模式:截图文件名不含时间戳,每条流只保存最新的截图文件,新的截图文件会覆盖原来的截图文件。示例:snapshot/{domain}/{app_name}/{stream_name}.jpg
设置回调
回调开关。
协议
回调地址支持HTTP/HTTPS协议。HTTP可能存在安全问题,推荐使用HTTPS。
回调地址
回调开关打开后,输入回调地址,回调地址中不能携带消息头和参数。支持HTTP/HTTPS协议,推荐使用HTTPS协议。
截图回调消息以JSON格式,通过HTTP接口向用户服务器发送POST请求,将截图回调信息反馈到用户服务器。截图回调消息体请参见回调示例。
鉴权密钥(可选)
鉴权Key值。若需要使用回调鉴权功能,请配置鉴权密钥,否则,留空即可。
- 支持自定义设置,长度为32-128个字符。
- 支持自动生成。
- 单击“确定”,完成直播截图模板的配置。
截图模板配置后,即可开始直播推流,推流过程中,直播服务会根据创建的截图模板对直播流进行截图。
- 您可以单击操作列的“修改”,修改直播截图模板的相关参数,其中,AppName不支持修改。
步骤四:查看直播截图
若您已配置直播截图模板,启动直播推流后,可以通过截图的输出路径快速进入到OBS桶中查看存储的直播截图,您还可以通过回调消息查看直播截图。
- 通过控制台查看直播截图
- 通过回调消息查看直播截图
若您在配置直播截图模板时,设置了回调地址,则每生成一张截图都将收到截图回调消息。回调消息字段如表2所示。
{ "domain": "play.example.com", "app": "live", "stream_name": "test001", "snapshot_url": "https://xxx.obs.cn-north-4.myhuaweicloud.com:443...", "width":"720", "height":"1280", "obs_addr": { "bucket": "xxx", "location": "cn-north-4", "object": "xxx.jpg" }, "auth_timestamp":1587954140, "auth_sign":"4918b1axxxxxxb583cffa119d72513bbc35a989f8569fxxxxxx057646154a04a" }
表2 消息体字段说明 字段
描述
domain
推流域名。
app
应用名称。
stream_name
流名称。
snapshot_url
截图下载链接。
width
图片宽度。
单位:像素。
height
图片高度。
单位:像素。
obs_addr
截图所在的OBS桶地址,具体结构体说明如下所示:- bucket:OBS的桶名称。
- location:OBS桶所在数据中心。
- object:OBS对象路径。
auth_timestamp
事件通知签名过期UNIX时间戳。当配置了“鉴权密钥”时,携带该字段。
格式为十进制的UNIX时间戳,即从1970年1月1日(UTC/GMT的午夜)以来的当前时间秒数。
示例:1592639100(即2020-06-20 15:45)
auth_sign
事件通知签名。当配置了“鉴权密钥”时,携带该字段。
auth_sign = HmacSHA256(domain + app + stream_name + snapshot_url + width + height + obs_addr.bucket + obs_addr.location + obs_addr.object + auth_timestamp,key)
其中,key为鉴权密钥值。