华为云vod视频点播服务使用配置
视频云点播服务流程图
-
华为云vod视频点播官方文档(工作流程)
-
入驻华为云
- 注册华为云
- 完成实名认证
- 开通视频点播服务
-
配置视频播放域名
-
使用已有注册备案的域名,解析成华为云视频播放域名(重点)
-
申请SSL证书,使用https协议的域名
-
配置域名
-
- 域名添加CNAME记录
阿里云的二级域名指向华为云在线播放地址
简介:开通华为云视频点播服务+视频播放域名设置
- 上传视频文件
-
转码
- 如果没有转码的视频播放不了
- 可以在上传时转码或者上传完之后转码
- 分类
简介:播放华为云视频点播控制台的视频
-
视频播放
- 直接预览播放(需要配置https域名才能预览播放)
- 复制播放地址浏览器打开
- 前端使用videojs插件播放 m3u8 格式视频
-
m3u8协议和mp4格式的区别
-
m3u8协议
- m3u8 采用苹果的HLS协议, ios与android设备均已支持
- m3u8可以根据网络状态自动切换码率,提高网络差导致的视频播放流畅度
-
mp4格式
- 对HTML5和flash播放器亲和度都挺好
- 文件头太大,结构复杂,长视频的大文件头影响加载速度的视频体验,所以短视频更常见
-
接入配置-华为云vod SDK接入参数获取和配置
简介:华为云vod SDK接入参数获取和配置
-
参数获取官方文档
-
参数
AK: 访问密钥ID,是与私有访问密钥关联的唯一标识符。访问密钥ID和私有访问密钥一起使用,对请求进行加密签名 SK: 与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改 PROJECT_ID: 项目ID REGION: 所属区域 ENDPOINT: 终端节点
-
AK、SK
- PROJECT_ID-项目ID
- REGION-所属区域
-
ENDPOINT-终端节点
-
参数配置
// huaweiCloud.js class HuaweiCloud { static AK = 'AJAQBM4XS2TDJdgfghjU65TKCI' static SK = 'ekBjyhu6hcxEou0endgfhpDk9UexApSKSdPZbHwON4yh' static PROJECT_ID = '44985aa25b1f4ddfyj1994a3c1764202bdb' static REGION = 'cn-north-4' static ENDPOINT = 'https://vod.cn-north-4.myhuaweicloud.com' } module.exports = HuaweiCloud
接入配置-华为云vod SDK接入获取视频播放地址配置
简介:华为云vod SDK接入获取视频播放地址配置
-
官方地址
-
接入配置
const { BasicCredentials, Region } = require('@huaweicloud/huaweicloud-sdk-core') const { ShowAssetDetailRequest,VodClient } = require('@huaweicloud/huaweicloud-sdk-vod') class HuaweiCloud { static AK = 'AJAQBM4XS2TDJU65TKCI' static SK = 'ekBjyhu6hcxEou0enpDk9UexApSKSdPZbHwON4yh' static PROJECT_ID = '44985aa25b1f4dd1994a3c1764202bdb' static REGION = 'cn-north-4' static ENDPOINT = 'https://vod.cn-north-4.myhuaweicloud.com' static getVodClient() { // 使用永久AK、SK Region级服务 const auth = new BasicCredentials().withAk(HuaweiCloud.AK).withSk(HuaweiCloud.SK).withProjectId(HuaweiCloud.PROJECT_ID) // 初始化指定云服务的客户端 return VodClient.newBuilder().withCredential(auth).withRegion(new Region(HuaweiCloud.REGION, HuaweiCloud.ENDPOINT)).build() } // 获取视频播放地址 static async getVideoUrl(assetId) { let vodClient = HuaweiCloud.getVodClient() let detailRequest = new ShowAssetDetailRequest() detailRequest.withAssetId(assetId) let detail = await vodClient.showAssetDetail(detailRequest) let outputs = detail.transcode_info?.output if (!outputs || outputs.length <= 0) return [''] let urlList = [] for (let output of outputs) { let { bit_rate, duration, video_size } = output.meta_data bit_rate > 0 && duration && duration > 0 && video_size > 0 && urlList.push(output.url) } return urlList } } module.exports = HuaweiCloud
接口开发-华为云vod SDK接入编码实战
简介:华为云vod SDK接入编码实战
-
创建接口
http://127.0.0.1:8081/api/getPlayUrl/v1/get_play_url
-
编码实战
get_play_url: async (req) => {
const { episodeId, token } = req
if (!(episodeId && token)) {
return BackCode.buildError({ msg: '缺少必传参数' })
}
// 获取集数据
let episode = await DB.Episode.findOne({ where: { id: episodeId }, raw: true })
console.log(episode);
if (!episode) {
return BackCode.buildResult(CodeEnum.COURSE_VIDEO_NO_EXIST)
}
// 获取用户信息
let tokenUser = SecretTool.jwtVerify(token)
// 判断当前集是否购买过
let order = await DB.ProductOrder.findOne({ where: { account_id: tokenUser.id, product_id: episode.product_id } })
if ((!order) && episode.free === 1) {
return BackCode.buildResult(CodeEnum.COURSE_VIDEO_NO_PERMISSION)
}
// 更新播放记录 - 查看用户和课程是否有播放记录
// 传入视频媒资id获取播放地址
let url = await huaWeiYun.getVideoUrl(episode.hwyun_id)
if (url.length < 0) {
return BackCode.buildResult(CodeEnum.COURSE_VIDEO_NO_EXIST)
}
return BackCode.buildSuccessAndData({ data: { playResult: url[0], episodeId: episodeId } })
}