[快速入门]请求华为cdn播放地址
视频直播 Live-入门

单击右下角的“开始推流”,开始推送直播流。 收起 展开 播放 收起 展开 步骤 1.获取播放地址,若您使用体验地址,可直接跳转到步骤2。 (1)登录视频直播控制台,在左侧导航树中选择“域名管理”,进入域名管理页面。 (2)在对应的域名行单击“管理”,在“基本信息”页签中获取播放地址。 2.运行VLC工具。 3

内容分发网络 CDN-功能

功能详情 内容分发网络 CDN 功能详情 分布式缓存加速服务,为客户提供快速、安全、可靠的加速服务 购买 控制台 文档 免费试用 中国大陆流量包1TB,为期1个月 管理加速域名 域名添加完成后,您可以在CDN控制台对接入CDN的加速域名进行启用、停用、移除、重新审核加速域名的操作,并且支持配置域名下线策略。

华为云自由视角服务

1、手机拍摄和上行推流:免费 2、自由视角转码:免费 3、播放:收取CDN流量费用。按1080P、4Mbps上行推流为例,播放码率平均为10-15Mbps,则播放流量 = 播放码率 * 播放时长 * 观看人数。比如3人观看,每人观看了10分钟,则CDN流量约 10~15Mbps * 3人 * 600秒

内容分发网络 CDN-计费说明

内容分发网络 CDN 专家咨询 内容分发网络 CDN 概览 功能 计费 入门 活动 计费说明 内容分发网络 CDN 计费说明 分布式缓存加速服务,为客户提供快速、安全、可靠的加速服务 购买 控制台 文档 免费试用 中国大陆流量包1TB,为期1个月 计费项 华为CDN计费分为两个

内容分发网络 CDN-入门

3步快速上手CDN 3步快速上手CDN 开通CDN服务 在使用CDN之前,您需要先开通CDN服务。 1.登录CDN控制台按照开通向导开通CDN服务,并按照您的实际业务需求选择计费模式; 2.若您已开通过CDN服务,请跳转到下一步; 添加CDN加速域名 如果您想通过CDN加速指定网站

视频点播VOD

Demand,简称VOD)为客户提供视频上传、媒资管理、媒资处理、分发加速的一站式视频点播媒体服务 视频点播(Video on Demand,简称VOD)为客户提供视频上传、自动化转码处理、媒资管理、分发加速的一站式视频点播媒体服务 控制台 文档 价格计算器 优质体验 网络分发加速,秒级起播,毫秒级响应,提供快速、稳定、流畅、全新的视频体验

视频直播

云,为泰国超千万用户提供优质的视频服务。 华为云为虎牙提供更高画质,更具性价比的视频直播方案 虎牙采用华为云高清低码方案,在H264、H265各个档位画质均排第一,整体带宽降低30%+。 华为云携手目睹,打造端到端企业直播解决方案 华为云为目睹提供高并发、低延迟、高清流畅、安全可靠的端到端企业直播解决方案。

边缘安全 EdgeSec

帮助文档 海量资源储备 华为云边缘安全EdgeSec服务依托于华为CDN遍布全球节点网络构建,在加速内容分发、传输的同时,为业务安全保驾护航 超大防护带宽 全球DDoS防护带宽超过15 Tbps,轻松抵御各类网络层、应用层的大流量DDoS攻击 全方位安全防护 继承华为云在安全攻防领域2

数据工坊

开发 开放 广泛集成华为OBS和第三方图片/视频处理能力 建议搭配使用 对象存储服务 OBS 内容分发网络 CDN 分布式消息服务 DMS 内容审核 审核内容 数据工坊基于OBS对象存储提供简单高效、检测准确的图片、视频、文本审核服务,满足多种业务场景下的内容审核的需求。 优势 -简单高效

[相关产品]请求华为cdn播放地址
快递地址解析-快递内容识别-智能地址解析-快递地址识别

【感受科技的温度】快递地址智能解析 智能快递地址识别 —— 可识别快递填单文本中的姓名、电话、地址等信息,智能解析地址做自动补充和纠正,可自动补全街道及行政区的地址信息,生成标准规范的结构化信息。【怜花数科】1、产品简介:→【感受科技的温度】快递地址智能解析 智能快递地址识别 —— 可识

快递地址解析-快递地址识别-快递内容识别-智能地址解析

【快递地址解析 快递内容识别 快递文本识别 智能快递地址识别】接口可识别快递填单文本中的姓名、电话、地址等信息,智能地址识别做自动补充和纠正,可自动补全街道及行政区的地址信息,生成标准规范的结构化信息。—— 我们只做精品!一、产品介绍 :【快递地址解析 快递内容识别 快递文本识别

cdn许可证

CDN 许可证,即内容分发网络业务经营许可证,是增值电信业务经营许可证的一种。CDN许可证-内容分发网络业务内容分发网络CDN)业务是第一类增值电信业务(B12类)。 内容分发网络CDN)业务是指利用分布在不同区域的节点服务器群组成流量分配管理网络平台,为用户提供内容的分散存

CDN许可证

作。有效期限:5年内容分发网络业务,是指利用分布在不同区域的节点服务器群组成流量分配管理网络平台,为用户提供内容的分散存储和高速缓存,并根据网络动态流量和负载状况,将内容分发到快速、稳定的缓存服务器上,提高用户内容的访问响应速度和服务的可用性服务。 一、CDN许可证的申请条件 1

CDN许可证

CDN经营许可证是第一类增资电信业务经营许可证,经营业务为内容分发网络业务。  无任何隐形消费,一站式省心服务,不下证全额退款

地址解析-经纬度地址解析-经纬度地址转换

【感受科技的温度】地址解析-经纬度地址解析-经纬度地址转换 —— 输入经纬度信息查询对应地理位置信息及附近周边的地理信息。输入地址信息查询返回对应经纬度坐标。支持各地名胜景区、建筑物名称解析为经纬度坐标。地理编码、逆地理编码接口基于百度坐标1、产品简介: →【感受科技的温度】地址解析-经纬度地址解析-经纬度地址转换

网站SCDN加速

加速乐是知道创宇云安全SCDN服务,提供低成本、高可用的网络分发服务,根据用户访问情况智能分配节点,大大提高用户访问网站的速度,解决因地域、带宽和服务器性能造成的访问瓶颈。如需了解产品具体情况,可以致电客服网站加速乐SCDN(安全内容分发服务)知道创宇云防御SCDN(Secure Content

CDN许可证委托服务

内容分发网络业务是指利用分布在不同区域的节点服务器群组成流量分配管理网络平台,为用户提供内容的分散存储和高速缓存,并根据网络动态流量和负载状况,将内容分发到快速、稳定的缓存服务器上,提高用户内容的访问响应速度和服务的可用性服务。 1、全名:第二类增资电信业务经营许可证--内容分发

经纬度地址解析-坐标地址转换

【经纬度解析-经纬度地址转换-经纬度地址解析-经纬度地址查询-经纬度转换-坐标地址查询-经纬度转地址-地址转经纬度】经纬度和地址相互转换,提供地址解析、逆地址解析、坐标系转换一站式服务。同时提供精准的商圈、知名的大型区域、附近知名的一级地标产品介绍:【经纬度解析-经纬度地址转换-经纬度地

[相似文章]请求华为cdn播放地址
CDN分发平台_CDN业务_内容分发网络

最佳实践 CDN分发网络加速OBS桶文件 CDN分发网络可以有效加速网站,为用户提供良好的体验,而OBS桶提供海量文件存储。将数据存放在OBS桶中然后通过配置CDN加速,可以在降低成本的同时,提高终端用户使用感受。 CDN分发网络加速ECS资源 华为CDN可以有效加速网站,为用户提供

CDN网络加速服务_CDN网络加速技术_内容分发网络

需回源,CDN通过一组预先定义好的策略(如内容类型、地理区域、网络负载状况等),将当时能够最快响应用户的CDN节点IP地址提供给用户,使用户可以以最快的速度获得网站内容。 了解产品 免费试用 CDN产品介绍 CDN最佳实践 CDN故障排除 CDN产品介绍 什么是CDN网络加速服务

CDN服务_CDN加速_内容分发网络

什么是CDN服务 CDN是构建在现有互联网基础之上的一层智能虚拟网络,通过在网络各处部署节点服务器,实现将源站内容分发至所有CDN节点,使用户可以就近获得所需的内容CDN服务工作原理 CDN通过一组预先定义好的策略(如内容类型、地理区域、网络负载状况等),将当时能够最快响应用户的CDN节点IP地址提供给用户。

CDN华为云_CDN分发网络_CDN服务

速度获得网站内容。 了解产品 CDN分发网络产品介绍 CDN分发网络最佳实践 CDN分发网络故障排除 CDN分发网络产品介绍 什么是CDN分发网络 CDN分发网络是构建在现有互联网基础之上的一层智能虚拟网络,通过在网络各处部署节点服务器,实现将源站内容分发至所有CDN节点,使用户可以就近获得所需的内容。

CDN平台_华为云CDN_CDN内容分发网络

本概念 CDN价格_CDN加速_CDN应用场景 更专业的CDN_CDN的功能_CDN的使用场景 华为CDN的优势_CDN计费方式_CDN续费 CDN入门_CDN的功能_快速接入CDN_华为云 什么是CDN_CDN的工作原理_CDN应用场景_华为CDN下载_免费CDN加速_CDN加速器

CDN分发网络是什么_CDN技术_CDN应用

了解产品 CDN分发网络产品介绍 CDN分发网络最佳实践 CDN分发网络故障排除 CDN分发网络产品介绍 什么是CDN分发网络 CDN分发网络是构建在现有互联网基础之上的一层智能虚拟网络,通过在网络各处部署节点服务器,实现将源站内容分发至所有CDN节点,使用户可以就近获得所需的内容。 CDN分发网络工作原理

视频点播如何防止被下载_cdn视频点播承载方案

播放地址。 其中“地址”列为原始播放地址,单击可获取鉴权播放地址。 在播放器端分别播放原始播放地址和鉴权播放地址,若原始播放地址播放失败,鉴权播放地址播放成功,则表示Key防盗链生效。 华为云视频点播如何防止被下载的优势 防止非法盗播 视频点播服务支持视频播放权限认证和视频加密等安全策略

视频点播方案_视频云点播_搭建视频点播

CDN是构建在现有互联网基础之上的一层智能虚拟网络,通过在网络各处部署节点服务器,实现将源站内容分发至所有CDN节点,使用户可以就近获得所需的内容CDN是构建在现有互联网基础之上的一层智能虚拟网络,通过在网络各处部署节点服务器,实现将源站内容分发至所有CDN节点,使用户可以就近获得所需的内容。 了解更多 内容分发网络

视频点播_快速开通视频点播服务_视频转码

通过在播放地址中的StreamName后加模板ID播放对应分辨率的直播视频,具体请参见拼接转码播放地址。 为什么视频转码服务直播播放的分辨率与转码模板配置的不一致? 可能是如下两个原因导致该问题: 未使用转码播放地址播放直播流,您可以参考拼接播放地址获取转码播放地址华为云视频

请求华为cdn播放地址

为保障直播资源不被非法盗用,您可以使用直播的Key防盗链功能,在原始推流或播放地址末尾加上鉴权信息。在主播请求直播推流或观众请求播放时,CDN会对其URL带的加密信息进行合法性判断,仅校验通过的请求会予以响应,其它非法的访问将予以拒绝。

若您有其它自定义防盗链规则的需求,请您提交工单与华为云技术客服联系。

工作原理

图1 Key防盗链工作原理

流程说明如下所示:

  1. 租户在直播控制台开启Key防盗链功能,并配置鉴权方式、Key值和时长。
  2. 直播服务将租户配置的鉴权方式、Key值和时长下发到CDN节点中。
  3. 主播/观众通过租户提供的鉴权推流/播放URL向CDN请求推流或播放。
  4. CDN根据推流或播放URL中携带的鉴权信息校验请求的合法性,仅校验通过的请求会被允许。

注意事项

  • 该功能为可选项,默认不启用。启用该功能后,原始直播加速URL将无法使用,需要按规则生成合法的防盗链URL。
  • 建议推流与播放鉴权使用不同的Key值,以增强安全性。若防盗链URL过期,或者签名不能通过,直播流将播放失败,并返回“403 Forbidden”信息。
  • 针对RTMP、FLV这类长连接业务,只有服务端收到用户请求时,才进行防盗链参数校验,校验通过后可以持续播放。
  • 针对HLS这类业务,用户播放后会携带相同的防盗链参数,持续发起请求。一旦防盗链参数过期,服务端便会因校验不通过,而拒绝访问,导致播放中断。

    所以建议这类业务,适当调整鉴权过期时间,避免因时间过短,而中途就播放失败。示例:如果预估HLS播放时长每次都在1小时以内,可设置过期时间为3600秒。

前提条件

开启Key防盗链

  1. 登录 视频直播 控制台。
  2. 在左侧导航栏中,选择域名管理,进入域名管理页面。
  3. 在需要配置鉴权信息的域名行,单击“管理”
  4. 在左侧导航栏中,选择基础配置 > 鉴权配置
  5. 选择Key防盗链,弹出“Key防盗链”对话框。
  6. 单击“开关”,配置Key防盗链参数,如图2所示。

    图2 配置Key防盗链
    表1 Key防盗链参数说明

    参数名

    描述

    类型

    计算鉴权串的方式,可选为:方式A、方式B、方式C或方式D。

    AB鉴权方式:采用MD5信息摘要算法,具体实现方法请参见鉴权方式A鉴权方式B

    C鉴权方式:采用对称加密算法,具体实现方法请参见鉴权方式C

    D鉴权方式:采用HMAC-SHA256算法,具体实现方法请参见鉴权方式D

    说明:

    鉴权方式ABC存在安全风险,鉴权方式D拥有更高的安全性,建议您优先使用鉴权方式D。

    Key

    鉴权key值。

    • 支持自定义设置,由32位的字母和数字组成。
    • 支持自动生成。

    时长

    URL鉴权信息的超时时长,指的是鉴权信息中携带的请求时间与直播服务收到请求时的时间的最大差值,用于检查直播推流URL或者直播播放URL是否已过期,单位:秒,范围限制:1分钟-30天。

    说明:
    • 针对RTMP、FLV这类长连接业务,只有服务端收到用户请求时,才进行防盗链参数校验,校验通过后可以持续播放。
    • 针对HLS这类业务,用户播放后会携带相同的防盗链参数,持续发起请求。一旦防盗链参数过期,服务端便会因校验不通过,而拒绝访问,导致播放中断。

      所以建议这类业务,适当调整鉴权过期时间,避免因时间过短,而中途就播放失败。示例:如果预估HLS播放时长每次都在1小时以内,可设置过期时间为3600秒。

  7. 配置完成后,单击“确定”
  8. 通过以下方式获取鉴权地址。

  9. 验证防盗链功能。

    使用第三方直播推拉流工具,通过鉴权推流地址和播放地址进行验证,若原始推流地址和播放地址无法成功推流和播放,使用鉴权推流地址和播放地址能成功推流和播放,则表示Key防盗链生效。

鉴权方式A

鉴权方式A主要通过Key、timestamp、rand(随机数)、uid(设置为0)和URL计算鉴权串。

鉴权URL格式
原始URL?auth_key={timestamp}-{rand}-{uid}-{md5hash}
md5hash的计算公式:
sstring = "{URI}-{Timestamp}-{rand}-{uid}-{Key}"
HashValue = md5sum(sstring)
表2 鉴权字段描述

字段

描述

timestamp

用户定义的有效访问时间起始点,值为1970年1月1日以来的当前时间秒数 。十进制或者十六进制整数。

示例:1592639100(即2020-06-20 15:45)

时长

鉴权URL有效的时间长度。

若设置的有效时间为1800s,则用户可在从timestamp开始的1800s内允许访问直播地址。超出该区间,鉴权失败。

示例:若设置的访问时间为2020-6-30 00:00:00,则链接真正失效时间为2020-6-30 00:30:00。

rand

随机数,建议使用UUID,不能包含中划线"-"。

示例:477b3bbc253f467b8def6711128c7bec

uid

userID。暂未使用,直接设置成0即可。

md5hash

通过md5算法计算出来的验证串,数字0-9和小写英文字母a-z混合组成,固定长度32。

sstring = "{URI}-{Timestamp}-{rand}-{uid}-{Key}"
HashValue = md5sum(sstring)

URI

指原始URL中从域名后开始到最后的路径。

  • 标准直播场景

    示例:/livetest/huawei1.flv

  • 低时延直播场景

    示例:/livetest/huawei1.sdp

Key

在控制台设置的防盗链Key值,具体请参见开启Key防盗链

鉴权URL示例

  • 标准直播场景
    以生成播放鉴权地址为例,推流鉴权地址的生成与播放鉴权地址的生成方法相同。
    原始URL:http://test-play.example.com/livetest/huawei1.flv
    timestamp:1592639100
    时长:1800s
    Key:GCTbw44s6MPLh4GqgDpnfuFHgy25Enly
    rand:477b3bbc253f467b8def6711128c7bec
    uid:0
    URI:/livetest/huawei1.flv
    根据计算公式,得到md5hash
    HashValue = md5sum("/livetest/huawei1.flv-1592639100-477b3bbc253f467b8def6711128c7bec-0-GCTbw44s6MPLh4GqgDpnfuFHgy25Enly") = dd1b5ffa00cf26acec0c169ae1cfabea

    则鉴权播放地址为:

    http://test-play.example.com/livetest/huawei1.flv?auth_key=1592639100-477b3bbc253f467b8def6711128c7bec-0-dd1b5ffa00cf26acec0c169ae1cfabea
  • 低时延直播场景
    以生成播放鉴权地址为例,推流鉴权地址的生成与播放鉴权地址的生成方法相同。
    原始URL:webrtc//test-play.example.com/livetest/huawei1
    timestamp:1592639100
    时长:1800s
    Key:GCTbw44s6MPLh4GqgDpnfuFHgy25Enly
    rand:477b3bbc253f467b8def6711128c7bec
    uid:0
    URI:/livetest/huawei1.sdp
    根据计算公式,得到md5hash
    HashValue = md5sum("/livetest/huawei1.sdp-1592639100-477b3bbc253f467b8def6711128c7bec-0-GCTbw44s6MPLh4GqgDpnfuFHgy25Enly") = dd1b5ffa00cf26acec0c169ae1cfabea

    则鉴权播放地址为:

    webrtc://test-play.example.com/livetest/huawei1?auth_key=1592639100-477b3bbc253f467b8def6711128c7bec-0-dd1b5ffa00cf26acec0c169ae1cfabea

鉴权方式B

鉴权方式B主要通过Key、timestamp和StreamName计算鉴权串。

鉴权URL格式
原始URL?txSecret=md5(Key + StreamName + txTime)&txTime=hex(timestamp)
表3 鉴权字段描述

字段

描述

txTime

播放URL的有效时间,为Unix时间戳的十六进制结果。

如果当前txTime的值大于当前请求的时间则可以正常播放,否则播放会被后台拒绝。

示例:5eed5888(即2020.06.20 08:30:00)

Key

在控制台设置的防盗链Key值,具体请参见开启Key防盗链

txSecret

URL中的加密参数。

通过将key,StreamName,txTime依次拼接的字符串进行MD5加密算法得出。

txSecret = md5(Key + StreamName + txTime)

时长

鉴权URL的有效时间长度。

txTime设置为当前时间,有效时间设置为1249s,则播放URL过期时间为当前时间+ 1249s。

鉴权URL示例

  • 标准直播场景
    以生成播放鉴权地址为例,推流鉴权地址的生成与播放鉴权地址的生成同理。
    原始URL:http://test-play.example.com/livetest/huawei1.flv
    Key:GCTbw44s6MPLh4GqgDpnfuFHgy25Enly
    StreamName:huawei1
    txTime:5eed5888
    时长:1249s
    根据计算公式,得到txSecret
    txSecret = md5(GCTbw44s6MPLh4GqgDpnfuFHgy25Enlyhuawei15eed5888) = 5cdc845362c332a4ec3e09ac5d5571d6

    则鉴权播放地址为:

    http://test-play.example.com/livetest/huawei1.flv?txSecret=5cdc845362c332a4ec3e09ac5d5571d6&txTime=5eed5888
  • 低时延直播场景
    以生成播放鉴权地址为例,推流鉴权地址的生成与播放鉴权地址的生成同理。
    原始URL:webrtc://test-play.example.com/livetest/huawei1
    Key:GCTbw44s6MPLh4GqgDpnfuFHgy25Enly
    StreamName:huawei1
    txTime:5eed5888
    时长:1249s
    根据计算公式,得到txSecret
    txSecret = md5(GCTbw44s6MPLh4GqgDpnfuFHgy25Enlyhuawei15eed5888) = 5cdc845362c332a4ec3e09ac5d5571d6

    则鉴权播放地址为:

    webrtc://test-play.example.com/livetest/huawei1?txSecret=5cdc845362c332a4ec3e09ac5d5571d6&txTime=5eed5888

鉴权方式C

鉴权方式C主要通过Key、Timestamp、AppName、StreamName和CheckLevel计算鉴权串。

鉴权URL格式
原始URL?auth_info=加密串.EncodedIV
鉴权字段的生成算法如下所示,具体代码示例请参考代码示例
  • LiveID = <AppName>+"/"+<StreamName>
  • 加密串 = UrlEncode(Base64(AES128(<Key>,"$"+<Timestamp>+"$"+<LiveID>+"$"+<CheckLevel>)))
  • EncodedIV = Hex(加密使用的IV)

算法中各加密参数说明如表4所示。

表4 加密参数说明

字段

描述

AppName

应用名称,与推流或播放地址中的AppName一致。

StreamName

流名称,与推流或播放地址中的StreamName一致。

Key

在控制台设置的防盗链Key值,具体请参见开启Key防盗链

LiveID

直播流ID,用于标识唯一的直播流,由AppName和StreamName组成。

LiveID = <AppName>+"/"+<StreamName>

Timestamp

鉴权参数生成的UTC时间,格式为“yyyyMMddHHmmss”,用于检查鉴权参数是否已过期,即Timestamp和当前时间差值的绝对值是否大于配置的超时时长。

CheckLevel

检查级别。取值为3或者5。

  • CheckLevel=3,只检查LiveID是否匹配,不检查鉴权URL是否过期。
  • CheckLevel=5,检查LiveID是否匹配,Timestamp是否超时。

IV

CBC对称加密算法依赖IV向量,随机生成的16位数字和字母组合,IV值长度为128位;CBC模式,PK CS 7填充。

鉴权URL示例

  • 标准直播场景

    以生成播放鉴权地址为例,推流鉴权地址的生成与播放鉴权地址的生成同理。

    原始URL:http://test-play.example.com/livetest/huawei1.flv
    AppName:livetest
    StreamName:huawei1
    Key:GCTbw44s6MPLh4GqgDpnfuFHgy25Enly
    LiveID:livetest/huawei1
    Timestamp:20190428110000
    CheckLevel:3
    IV:yCmE666N3YAq30SN
    根据计算公式,得到“加密串”“EncodedIV”
    加密串 = I90KW7GhxOMwoy5yaeKMStZsOC%2B6WIyqU2kLBYAvcso%3D
    EncodIV = 79436d453636364e335941713330534e
    则鉴权播放地址为:
    http://test-play.example.com/livetest/huawei1.flv?auth_info=I90KW7GhxOMwoy5yaeKMStZsOC%2B6WIyqU2kLBYAvcso%3D.79436d453636364e335941713330534e
  • 低时延直播场景

    以生成播放鉴权地址为例,推流鉴权地址的生成与播放鉴权地址的生成同理。

    原始URL:webrtc://test-play.example.com/livetest/huawei1
    AppName:livetest
    StreamName:huawei1
    Key:GCTbw44s6MPLh4GqgDpnfuFHgy25Enly
    LiveID:livetest/huawei1
    Timestamp:20190428110000
    CheckLevel:3
    IV:yCmE666N3YAq30SN
    根据计算公式,得到“加密串”“EncodedIV”
    加密串 = I90KW7GhxOMwoy5yaeKMStZsOC%2B6WIyqU2kLBYAvcso%3D
    EncodIV = 79436d453636364e335941713330534e
    则鉴权播放地址为:
    webrtc://test-play.example.com/livetest/huawei1?auth_info=I90KW7GhxOMwoy5yaeKMStZsOC%2B6WIyqU2kLBYAvcso%3D.79436d453636364e335941713330534e

鉴权方式D

鉴权方式D主要通过Key、timestamp和StreamName计算鉴权串。

鉴权URL格式
原始URL?hwSecret=hmac_sha256(Key, StreamName + hwTime)&hwTime=hex(timestamp)
表5 鉴权字段描述

字段

描述

hwTime

播放URL的有效时间,为Unix时间戳的十六进制结果。

如果当前hwTime+时长的值大于当前请求的时间则可以正常播放,否则播放会被后台拒绝。

示例:5eed5888(即2020.06.20 08:30:00)

Key

在控制台设置的防盗链Key值,具体请参见开启Key防盗链

hwSecret

URL中的加密参数。

以Key和StreamName+hwTime为参数进行HMAC-SHA256加密算法得出。

hwSecret = hmac_sha256(Key, StreamName + hwTime)

时长

鉴权URL的有效时间长度。

hwTime设置为当前时间,有效时间设置为1249s,则播放URL过期时间为当前时间+ 1249s。

鉴权URL示例

  • 标准直播场景
    以生成播放鉴权地址为例,推流鉴权地址的生成与播放鉴权地址的生成同理。
    原始URL:http://test-play.example.com/livetest/huawei1.flv
    Key:GCTbw44s6MPLh4GqgDpnfuFHgy25Enly
    StreamName:huawei1
    hwTime:5eed5888
    时长:1249s
    根据计算公式,得到hwSecret
    hwSecret = hmac_sha256(GCTbw44s6MPLh4GqgDpnfuFHgy25Enly, huawei15eed5888) = ce201856a0957413319e883c8ccae13602f01d3d91e21daf5161964cf708a6a8

    则鉴权播放地址为:

    http://test-play.example.com/livetest/huawei1.flv?hwSecret=ce201856a0957413319e883c8ccae13602f01d3d91e21daf5161964cf708a6a8&hwTime=5eed5888
  • 低时延直播场景
    以生成播放鉴权地址为例,推流鉴权地址的生成与播放鉴权地址的生成同理。
    原始URL:webrtc://test-play.example.com/livetest/huawei1
    Key:GCTbw44s6MPLh4GqgDpnfuFHgy25Enly
    StreamName:huawei1
    hwTime:5eed5888
    时长:1249s
    根据计算公式,得到hwSecret
    hwSecret = hmac_sha256(GCTbw44s6MPLh4GqgDpnfuFHgy25Enly, huawei15eed5888) = ce201856a0957413319e883c8ccae13602f01d3d91e21daf5161964cf708a6a8

    则鉴权播放地址为:

    webrtc://test-play.example.com/livetest/huawei1?hwSecret=ce201856a0957413319e883c8ccae13602f01d3d91e21daf5161964cf708a6a8&hwTime=5eed5888

代码示例

以下为鉴权方式C的鉴权串生成代码示例。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

public class Main {

        public static void main(String[] args) {

		// data="$"+<Timestamp>+"$"+<LiveID>+"$"+<CheckLevel>,具体请参见“鉴权方式C”
                String data = "$20190428110000$live/stream01$3";

                // 随机生成的16位数字和字母组合
		byte[] ivBytes = "yCmE666N3YAq30SN".getBytes();

                //在直播控制台配置的Key值
		byte[] key = "GCTbw44s6MPLh4GqgDpnfuFHgy25Enly".getBytes();

                String msg = aesCbcEncrypt(data, ivBytes, key);
		try {
			System.out.println(URLEncoder.encode(msg, "UTF-8") + "." + bytesToHexString(ivBytes));
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
	}

        private static String aesCbcEncrypt(String data, byte[] ivBytes, byte[] key) {
		try {
			SecretKeySpec sk = new SecretKeySpec(key, "AES");
			Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

                        if (ivBytes != null) {
				cipher.init(Cipher.ENCRYPT_MODE, sk, new IvParameterSpec(ivBytes));
			} else {
				cipher.init(Cipher.ENCRYPT_MODE, sk);
			}

                        return Base64.encode(cipher.doFinal(data.getBytes("UTF-8")));
		} catch (Exception e) {
			return null;
		}
	}

        public static String bytesToHexString(byte[] src) {
		StringBuilder stringBuilder = new StringBuilder("");
		if ((src == null) || (src.length <= 0)) {
			return null;
		}

                for (int i = 0; i < src.length; i++) {
			int v = src[i] & 0xFF;
			String hv = Integer.toHexString(v);
			if (hv.length() < 2) {
				stringBuilder.append(0);
			}
			stringBuilder.append(hv);
		}
		return stringBuilder.toString();
	}
}

以下是Base64类,用于将加密串进行编码。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
public class Base64
{

    /** Base64编码表。*/
    private static char base64Code[] =
    {
        'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
        'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
        'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1',
        '2', '3', '4', '5', '6', '7', '8', '9', '+', '/',};

    /**
     * 构造方法私有化,防止实例化。
     */
    private Base64()
    {
        super();
    }

    /**
     * Base64编码。将字节数组中字节3个一组编码成4个可见字符。
     * @param bytes 需要被编码的字节数据。
     * @return 编码后的Base64字符串。
     */
    public static String encode(byte[] bytes)
    {
        int a = 0;

        // 按实际编码后长度开辟内存,加快速度
        StringBuffer buffer = new StringBuffer(((bytes.length - 1) / 3) << 2 + 4);

        // 进行编码
        for (int i = 0; i < bytes.length; i++)
        {
            a |= (bytes[i] << (16 - i % 3 * 8)) & (0xff << (16 - i % 3 * 8));
            if (i % 3 == 2 || i == bytes.length - 1)
            {
                buffer.append(Base64.base64Code[(a & 0xfc0000) >>> 18]);
                buffer.append(Base64.base64Code[(a & 0x3f000) >>> 12]);
                buffer.append(Base64.base64Code[(a & 0xfc0) >>> 6]);
                buffer.append(Base64.base64Code[a & 0x3f]);
                a = 0;
            }
        }

        // 对于长度非3的整数倍的字节数组,编码前先补0,编码后结尾处编码用=代替,
        // =的个数和短缺的长度一致,以此来标识出数据实际长度
        if (bytes.length % 3 > 0)
        {
            buffer.setCharAt(buffer.length() - 1, '=');
        }
        if (bytes.length % 3 == 1)
        {
            buffer.setCharAt(buffer.length() - 2, '=');
        }
        return buffer.toString();
    }

}

请求华为cdn播放地址常见问题

更多常见问题 >>
  • 调度是 CDN 中的重中之重,流量接入、流量牵引、选择合适的 CDN 节点服务器等工作,都是在调度环节完成的。通常情况下,CDN用户的内容访问请求调度分为两个层次:全局调度和本地调度。

  • 预热的任务一直在处理中的可能原因有如下几种:可能当前CDN处于预热高峰期,您的预热任务正在排队中。缓存预热的时候CDN要回源请求资源,会占用源站带宽。当您要执行大批量文件预热时,可能会导致您的源站带宽资源被占满,建议:预热时请尽量分批次执行。您可以在访问量低的时间(如夜间)进行预热。升级您的源站带宽。

  • CDN分发平台是通过将源站内容分发至靠近用户的加速节点,使用户可以就近获得所需的内容,解决Internet网络拥挤的状况,提高用户访问的响应速度和成功率,从而提升您业务的使用体验。华为云CDN特惠活动热卖中,CDN中国大陆流量包低至1元。

  • CDN服务通过将源站内容分发至靠近用户的加速节点,使用户可以就近获得所需的内容,解决Internet网络拥挤的状况,提高用户访问的响应速度和成功率,从而提升您业务的使用体验。便宜好用的CDN就这华为云,本文详解华为云CDN如何使用,快速入门华为云CDN。

  • 传统的点播服务会加大服务器的负载,并消耗巨大的带宽资源,同时又无法保证终端用户访问时需要的高速体验,CDN点播加速可以提供快速、稳定和安全的点播加速服务,通过分布在各个区域的CDN节点,将音视频内容扩展到距离用户较近的地方,随时随地为用户提供高品质的访问体验。

  • 视频点播是集视频上传、自动化转码处理、媒体资源管理、分发加速、视频播放于一体的一站式媒体服务,为海量视频内容提供智能点播方案;支持通过防盗链、播放鉴权、视频加密等多级安全机制,充分保障视频安全,