华为云vod视频点播服务使用配置

215 阅读3分钟

华为云vod视频点播服务使用配置

视频云点播服务流程图

image.png

  • 华为云vod视频点播官方文档(工作流程)

  • 入驻华为云

    • 注册华为云
    • 完成实名认证
    • 开通视频点播服务
  • 配置视频播放域名

    • 使用已有注册备案的域名,解析成华为云视频播放域名(重点)

    • 申请SSL证书,使用https协议的域名

    • 配置域名

image.png

-   域名添加CNAME记录
    

image.png

阿里云的二级域名指向华为云在线播放地址

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

简介:开通华为云视频点播服务+视频播放域名设置

  • 上传视频文件

image.png

  • 转码

    • 如果没有转码的视频播放不了
    • 可以在上传时转码或者上传完之后转码

 

  • 分类

简介:播放华为云视频点播控制台的视频

  • 视频播放

    • 直接预览播放(需要配置https域名才能预览播放)

image.png - 复制播放地址浏览器打开

image.png

-   前端使用videojs插件播放 m3u8 格式视频

 

  • m3u8协议和mp4格式的区别

    • m3u8协议

      • m3u8 采用苹果的HLS协议, ios与android设备均已支持
      • m3u8可以根据网络状态自动切换码率,提高网络差导致的视频播放流畅度
    • mp4格式

      • 对HTML5和flash播放器亲和度都挺好
      • 文件头太大,结构复杂,长视频的大文件头影响加载速度的视频体验,所以短视频更常见

 接入配置-华为云vod SDK接入参数获取和配置

简介:华为云vod SDK接入参数获取和配置

image.png

  • 参数获取官方文档

  • 参数

    AK: 访问密钥ID,是与私有访问密钥关联的唯一标识符。访问密钥ID和私有访问密钥一起使用,对请求进行加密签名
    SK: 与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改
    PROJECT_ID: 项目ID
    REGION: 所属区域
    ENDPOINT: 终端节点
    
  • AK、SK

image.png

  • PROJECT_ID-项目ID

image.png

  • REGION-所属区域

image.png

image.png

image.png

image.png

image.png

  • 参数配置

    // 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 } })
   }