云服务器内容精选

  • 为什么调用API时提示“APIG.0301”? 调用API时提示“APIG.0301”,可能有以下两个原因: 提示"error_msg":"Incorrect IAM authentication information: decrypt token fail","error_code":"APIG.0301",是因为token解密失败,请检查token是否完整、是否过期、获取token与调用服务的区域是否跨区、账号是否因欠费等原因导致权限被限制。具体请参见Token认证鉴权。 提示"error_msg":"Incorrect IAM authentication information: verify aksk signature fail","error_code":"APIG.0301",是因为AK/SK认证失败,请检查AK/SK是否正确、账号是否因欠费等原因导致权限被限制。具体请参见AK/SK认证鉴权。 父主题: API使用
  • 录制回调 直播录制至OBS提供了录制回调功能,用于推送录制状态信息,包括录制开始、开始创建新的录制文件、录制文件生成完成、录制结束和录制失败。回调消息字段如表2所示。 表2 消息体字段说明 字段 描述 project_id 项目ID。 job_id 用于标识同一个文件。当“event_type”为“RECORD_NEW_FILE_START”或“RECORD_FILE_COMPLETE”时,携带该字段。 task_id 录制任务ID,用于唯一标识一个录制任务。 event_type 消息类型。 取值如下: RECORD_START:表示录制开始。若配置了录制模板和录制回调,则直播推流开始时,开始录制,触发该事件。 RECORD_NEW_FILE_START:表示开始创建新的录制文件。以下情况会触发该事件: 直播推流开始,开始创建第一个录制文件。 直播断流恢复后,若“最大断流合并时长”配置为“断流后生成新文件”,则开始创建新的录制文件。 当前录制时长超过了配置的录制周期,则开始新的录制文件生成。 RECORD_FILE_COMPLETE:表示录制文件生成完成。以下情况会触发该事件: 录制时长达到配置的录制周期,则当前录制文件生成完成,并开始新的录制生成。 直播断流后,若“最大断流合并时长”配置为“断流后生成新文件”,则当前录制文件生成完成,若断流恢复,将开始新的录制文件生成。 RECORD_OVER:表示录制结束,直播断流时长超过了最大断流合并时长,当前录制任务结束,触发该事件。 RECORD_FAILED:表示录制失败,当拉流失败、录制文件上传OBS失败等因素导致录制失败时,触发该事件。 publish_domain 直播推流 域名 。 app 应用名。 stream 录制的流名。 record_format 录制格式,支持HLS、FLV和MP4格式。 download_url 录制文件的下载地址。当“event_type”为“RECORD_FILE_COMPLETE”时,携带该字段。 说明: 使用该下载地址用于视频播放无法保证播放效果。 asset_id 用于标识一个录制文件。 当“event_type”为“RECORD_FILE_COMPLETE”时,携带该字段。 file_size 文件大小。 单位:Byte。 record_duration 录制文件的时长。 单位:秒。 start_time 录制文件的开始时间,即接收到第一帧数据的时间,格式为yyyy-mm-ddThh:mm:ssZ。 当“event_type”为“RECORD_FILE_COMPLETE”时,携带该字段。 end_time 录制文件的结束时间,格式为yyyy-mm-ddThh:mm:ssZ。 当“event_type”为“RECORD_FILE_COMPLETE”时,携带该字段。 width 录制文件分辨率的宽。 当“event_type”为“RECORD_FILE_COMPLETE”时,携带该字段。 height 录制文件分辨率的高。 当“event_type”为“RECORD_FILE_COMPLETE”时,携带该字段。 obs_location 存储录制文件的OBS桶所在区域。 当“event_type”为“RECORD_FILE_COMPLETE”时,携带该字段。 obs_bucket 存储录制文件的OBS桶。 当“event_type”为“RECORD_FILE_COMPLETE”时,携带该字段。 obs_object OBS桶存储录制文件的路径。 当“event_type”为“RECORD_FILE_COMPLETE”时,携带该字段。 auth_sign 事件通知签名。当配置了“鉴权密钥”时,携带该字段。 MD5方式:auth_sign=MD5(key + auth_timestamp) HMA CS HA256方式:HMACSHA256(auth_timestamp + event_type + publish_domain + app + stream + download_url + play_url,key) 其中,key为鉴权密钥值。 auth_timestamp 事件通知签名过期UNIX时间戳。当配置了“鉴权密钥”时,携带该字段。 格式为十进制的UNIX时间戳,即从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数。 若 消息通知 中的auth_timestamp值所指定的时间已经过期,则此消息通知无效,进而防止网络重放攻击。 error_message 录制失败的描述信息。 当“event_type”为“RECORD_FAILED”时,携带该字段。 消息示例如下所示: 录制开始事件,即“event_type”=“RECORD_START”,若配置了录制模板和录制回调,则直播推流开始时,开始录制,产生该事件回调。 { "project_id" : "70b76xxxxxx34253880af501cdxxxxxx", "publish_domain" : "push.example.com", "event_type" : "RECORD_START", "app" : "live", "stream" : "mystream", "record_format" : "HLS", "file_size" : 3957964, "record_duration" : 120 }
  • 截图回调 直播截图回调用于推送截图状态信息,当截图文件生成时触发该回调事件。回调消息字段如表3所示。 表3 消息体字段说明 字段 描述 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为鉴权密钥值。 消息示例如下所示: { "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" }
  • 推流回调 推流回调用于推送推流状态信息,包括推流成功和推流中断,回调消息字段如表1所示。 表1 消息体字段说明 字段 描述 domain 推流域名。 app 应用名称。 stream 流名称。 user_args 推流参数。 client_ip 推流客户端IP。 node_ip 接受流的节点IP。 publish_timestamp 推流Unix时间戳,一次推流活动会产生相同时间戳的推流和断流消息。 event 直播推流和断流标识。 取值为: PUBLISH:开播。 PUBLISH_DONE:停播。 auth_timestamp 事件通知签名过期UNIX时间戳。当配置了“鉴权密钥”时,携带该字段。 格式为十进制的UNIX时间戳,即从1970年1月1日(UTC/GMT的午夜)以来的当前时间秒数。 示例:1592639100(即2020-06-20 15:45) auth_sign 事件通知签名。当配置了“鉴权密钥”时,携带该字段。 auth_sign = HmacSHA256(event + domain + app + stream + auth_timestamp, key) 其中,key为鉴权密钥值。 消息示例,如下所示: { "domain":"push.example.com", "app":"live", "stream":"example_stream", "user_args":"auth_info=yz1TG0PVN/5isfyrGrRj10gKPCWqSS2X02t6QsRrocH+mEq0gQ0g8k6KhalS84sQ+kDprFyqI0yajbYiFmUO8e45B7ryaS+MpJBlYkhwnuFLnRiKK/IXG7.33436b625354564f6e4d4d434f55&cdn=hw", "client_ip":"100.111.*.*", "node_ip":"112.11.*.*", "publish_timestamp":"1587954134,", "event":"PUBLISH" "auth_timestamp":1587954140, "auth_sign":"ff3b2bxxx5cfd56e76d72bed4c4aa2dxxxca8c2e46467d205a6417d4fc" }
  • 中级CA机构颁发的证书 中级机构颁发的证书文件包含多份证书,配置HTTPS时,需要将所有证书拼接在一起组成一份完整的证书后再上传。拼接后的证书类似图2。 通过记事本打开所有*.PEM格式的证书文件,将服务器证书放在首位,再放置中间证书。一般情况下,机构在颁发证书的时候会有对应说明,请注意查阅相关规则。通用的规则如下: 证书之间没有空行。 证书链的格式如下: -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- -----END CERTIFICATE-----
  • RSA私钥格式要求 PEM格式的文件可以存放证书或私钥,如果*.PEM只包含私钥,一般用*.KEY代替。 通过记事本打开*.PEM或*.KEY的私钥文件,可以查看到类似图3所示的全部私钥信息。 RSA格式私钥: 以证书链“-----BEGIN RSA PRIVATE KEY-----”开头,以证书链“-----END RSA PRIVATE KEY-----”结尾。 证书链之间的内容,要求每行64个字符,最后一行允许不足64个字符。 证书内容不包含空格。
  • Root CA机构颁发的证书 Root CA机构颁发的证书是一份完整的证书,配置HTTPS时,仅上传该证书即可。 通过记事本打开*.PEM格式的证书文件,可以查看到类似图1所示的全部证书信息。 PEM格式证书: 以证书链“-----BEGIN CERTIFICATE-----”开头,以证书链“-----END CERTIFICATE-----”结尾。 证书链之间的内容,要求每行64个字符,最后一行允许不足64个字符。 证书内容不包含空格。
  • 格式转换 配置HTTPS仅支持PEM格式的证书/私钥,其他格式均不支持。其他格式的证书/私钥需要转换成PEM格式,建议通过OpenSSL工具进行转换。下面是几种比较流行的证书格式转换为PEM格式的方法。 以下示例均假设转换前证书名为old_certificate,私钥名为old_key,转换后证书名为new_certificate,私钥文件名为new_key。 DER转换为PEM openssl x509 -inform der -in old_certificate.cer -out new_certificate.pem openssl rsa -inform DER -outform pem -in old_key.der -out new_key.pem P7B转换为PEM openssl pkcs7 -print_certs -in old_certificate.p7b -out new_certificate.cer PFX转换为PEM openssl pkcs12 -in old_certificat.pfx -nokeys -out new_certificate.pem openssl pkcs12 -in old_certificat.pfx -nocerts -out new_key.pem 若需要将PKCS8格式私钥转换为PKCS1格式,则参考如下方法: openssl rsa -in old_certificat.pem -out pkcs1.pem
  • 直播视频录制 标准直播和低时延直播都支持视频录制功能,操作流程相同,如下所示。 直播录制是指在直播推流时将直播内容进行录制并将录制的视频存储到OBS( 对象存储服务 Object Storage Service)中,然后在OBS中对录制的直播视频进行下载、分享等处理。 因直播录制文件最终存储在OBS中,所以您需要在OBS中创建存储桶,操作请参见创建桶。其中,OBS服务计费情况,请参见OBS产品价格详情。 您需要授权直播服务使用OBS桶存储录制文件,操作请参见云资源授权。 您可以设置直播录制格式、周期等,操作请参见配置录制模板。 如您想实时了解直播录制状态,可在直播录制前配置录制回调,操作请参见配置录制回调。 开始直播推流。 直播录制完成后,您可以在直播、OBS服务中管理录制文件,如预览、下载、分享等,操作请参见管理录制文件。 父主题: 快速入门
  • 功能特性 华为云标准直播提供了直播推流、直播播放、直播转码、直播录制等功能,广泛地用于在线教育、互动文娱等场景。具体如表1所示。 HTTP协议存在安全风险,建议使用HTTPS协议。 表1 功能特性 类别 特性名称 特性说明 直播推流 推流协议 支持RTMP协议推流,也支持纯音频或纯视频推流。 推流形式 支持常见的第三方软件例如OBS/XSplit/FMLE等。 上行加速 支持直播内容上行推流加速、用户接入点/设备调度(DNS/HTTP DNS)、访问鉴权、弹性伸缩。 直播播放 播放协议 标准直播场景:支持RTMP、HTTP-FLV和HLS三种播放协议。 低时延直播场景:支持WebRTC播放协议(支持降级到HTTP-FLV)。 播放形式 标准直播场景:支持常见的第三方播流软件,如VLC等。 低时延直播场景:支持通过低时延在线Demo或根据API接口开放web端播放。 下行加速 提供直播内容下行分发加速、用户接入点/设备调度(DNS/HTTP DNS)、访问鉴权、弹性伸缩。 直播流处理 录制 支持将直播流录制存储到对象存储服务(OBS),直播流录制格式为HLS、FLV和MP4。 转码 支持对直播流进行多规格转码,支持H.264和H.265标准转码和高清低码转码。 截图 支持对直播流进行截图存储到OBS桶中,截图文件暂只支持JPG格式。 延时 支持修改播放延时。 说明: 低时延直播场景下,不建议使用此功能。 拉流回源 支持将自有源站中的直播内容拉取到 华为云直播 源站进行加速分发。 直播管理 管理方式 支持通过 视频直播 控制台进行图形化管理,也支持调用API进行直播管理。 直播控制台 总览 支持查看直播的今日下行流量、下行带宽峰值等数据。 支持变更直播的CDN计费模式。 直播管理 支持查看在线流和禁推流信息。 支持查看录制文件。 域名管理 支持新增、删除、停用、启用直播推流域名和播放域名。 支持推流域名和播放域名关联或取消关联。 推流域名支持配置转码、录制、截图和开停播通知等,支持推流鉴权。 播放域名支持配置拉流回源、HTTPS证书和延时等,支持Key防盗链、Referer防盗链和IP黑名单。 用量统计 支持查看所有播放域名的下行带宽/流量使用统计信息,还支持查看所有推流域名的转码时长、录制最大并发数和截图数量统计信息。 业务监控 支持查看播放域名的下行带宽/流量使用量、播放画像信息、请求响应返回的所有状态码及对应直播流的在线观看人数等数据,还支持查看对应推流域名的上行带宽/流量使用量、总推流路数、历史推流详情及推流帧率/码率等监控信息。 LLL统计分析 查看播放域名对应低时延直播业务的统计数据,包括:下行带宽/流量使用量、观众数、全局播放统计和单路播放统计。 日志管理 支持查看播放域名被网络用户访问的详细日志,可下载最近90天的日志文件。 支持实时查看播放域名被网络用户访问的详细日志记录。 云资源授权 支持将OBS桶授权给直播服务,允许直播服务将视频截图存储在对应的桶中。 工具库 支持使用防盗地址生成工具快速生成推流域名和播放域名的鉴权URL。 直播安全 URL鉴权 支持自定义鉴权Key,用于校验直播推流和播放请求的URL的合法性。 Referer防盗链 支持对播放请求的Referer进行识别和过滤。 IP黑白名单 支持对播放请求者的IP进行识别和过滤。 HTTPS安全加速 支持使用播放域名的证书配置HTTPS,并将其部署到CDN节点,从而实现HTTPS安全加速。 直播API 域名管理 支持通过API创建、删除、修改和查询直播域名。 支持为已创建的播放域名和推流域名建立或删除域名映射关系。 直播转码 支持通过API查询、修改、创建和删除直播转码模板。 流管理 支持通过API查询和修改禁推属性,查询直播加速数据等。 鉴权管理 支持通过API查询、更新和删除指定域名的Key防盗链配置。 截图管理 支持通过API创建、删除、修改和查询直播截图配置。 日志管理 支持通过API获取直播播放日志。 录制管理 支持通过API创建、查询、删除直播录制模板,实现直播流录制到OBS桶中,供用户预览和回看。 录制回调管理 支持通过API创建、删除、修改、查询直播录制状态回调消息。 支持通过API查询录制回调配置列表信息。 HTTPS证书管理 支持通过API查询、修改和删除指定域名的https证书配置。 OBS桶管理 支持通过API进行OBS桶授权及取消授权。 数据统计分析 支持通过API查询播放流量、带宽数据,查询指定时间范围内的播放带宽峰值、流量汇总数据等。 流监控 支持通过API查询单个直播流的推流帧率和码率数据。 直播SDK 服务端SDK 支持多种开发语言的SDK,帮助您轻松实现二次开发。目前支持:Java、Python、Go、PHP。
  • 播放(Web接入方式) 获取播放地址。 登录视频直播控制台,在左侧导航树中选择“域名管理”,进入域名管理页面。 在对应的低时延直播播放域名行单击“管理”,进入基本信息页面获取低时延直播播放地址。 其中“StreamName”为自定义的,但需要与低时延直播推流地址中的“StreamName”一致,否则会播放失败。 如示例,可拼接为如下格式的低时延直播播放地址: webrtc://exampletest.huaweicloud.com/live/huawei09 其中,exampletest.huaweicloud.com为配置的低时延直播域名。
  • 推流 下面以OBS推流工具为例进行低时延直播推流演示。 获取低时延直播推流地址。 登录视频直播控制台,在左侧导航树中选择“域名管理”,进入域名管理页面。 在对应的低时延直播推流域名行单击“管理”,进入基本信息页面获取低时延直播推流地址。 示例如图1所示,其中“StreamName”为自定义的,如推流地址: rtmp://livepush-test.huaweicloud.com/live/huawei09。 图1 推流地址 图中域名仅为示例,实际使用时,您需要使用已配置的低时延直播推流域名。 运行OBS工具,单击右下角的“设置”。 图2 设置 在左侧菜单栏中选择“输出”。 请您按照要求设置以下参数,其余参数保持默认值即可。 “输出模式”设置为“高级”。 “码率控制”设置为“ABR”。 “比特率”设置为“2000 Kbps”。 “关键帧间隔”设置为“1”。 “CPU 使用预设”设置为“ultrafast”。 “配置”设置为“baseline”。 “微调”设置为“zerolatency”。 由于低时延直播推流端不推包含B帧的流,所以您需要在OBS推流端中关闭B帧。 图3 输出设置 在左侧菜单栏选择“直播”,输入步骤1获取的直播推流URL。 图4 直播设置 推流地址分两部分输入“URL”和“流名称”中。具体填写规则如下: “服务器”:填写包含AppName前的地址,如"rtmp://livepush-test.huaweicloud.com/live/"。 “推流码”:填写包含“StreamName”后的地址,如“huawei01”。 由于使用的OBS工具版本不同,界面参数的名称可能会不同,但填写规则是相同的。 单击“确定”,完成低时延直播推流地址的配置。 在“来源”区域单击左下角的“+”,选择直播流来源。 图5 来源设置 媒体源:表示本地媒体文件。 视频采集设备:表示摄像头,若PC有配套摄像头,会直接启用摄像头。 单击右下角的“开始直播”,开始推送低时延直播流。
  • 低时延直播场景 直播大班课:毫秒级时延让老师与学生、学生与学生之间高度同步,提升答题互动、白板互动、抢红包/积分等互动玩法体验。 电商直播:助力电商直播抢购、秒杀、发红包等直播间活动的公平、一致体验。主播及时解答用户对商品信息、活动信息等的疑问,助力提升电商直播平台的UV和GMV。 秀场直播:主播及时回复实时弹幕,打赏,提升观众送礼等对画面实时性要求高的直播互动场景中的观众互动体验。 赛事直播:直播间一起观看体育赛事、演唱会等,观众实时互动交流,低时延共享欢聚时刻。
  • 背景信息 强制跳转HTTPS:配置HTTPS后,开启强制跳转HTTPS,若用户发起HTTP请求,服务端会返回302重定向响应,原来的HTTP请求将会被强制重定向为HTTPS请求。 相比HTTP协议,HTTPS具有如下优势: HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全,可防止数据在传输过程中被窃取、改变,确保数据的完整性。 在HTTPS协议中,会对用户的关键信息进行加密,避免Session ID或Cookie内容被攻击者捕获,导致敏感信息泄露。
  • 低时延直播场景 毫秒级超低延时播放:采用 UDP 协议实现高并发场景下节点间毫秒级延迟直播能力,完善标准直播中3秒-5秒延迟的弊端,同时兼顾秒开、卡顿率等核心指标,给用户带来超低延时直播体验。 功能完善,平滑兼容:兼容了标准直播包括推流、转码、录制、截图、播放等全功能,支持客户能够从现有的标准直播业务平滑迁移。 简单易用,安全可靠:采用标准协议,对接简单,在Chrome和Safari浏览器中无需任何插件即可进行播放。播放协议默认加密,更加安全可靠。