视频上传到腾讯云(附带:获取播放视频的签名)

视频托管到腾讯云(客户端上传)、获取播放视频的签名

涉及知识点:

​ mysql、springBoot、mybatisPlus、微服务(只需理解nacos服务中心、gateway网关即可,其他的这里没用上)、了解vue生命周期、了解ElementUI基本使用,了解前后分离开发。

场景:

​ 做一个游戏直播平台项目,需要让用户上传视频,如果上传到服务器就会使得服务器端磁盘压力特别大。选择将用户上传的视频托管给腾讯云的点播服务,从而彻底解决服务器磁盘压力问题。

​ 腾讯云提供了服务器端上传视频和客户端上传视频,因为上传视频涉及磁盘的读取(一定要使用客户端上传),所以我们选择使用node.js实现客户端上传视频。

​ 使用客户端上传视频必须向后端获取上传视频的凭证。

​ 上传视频成功后其他用户可以观看,为了保护视频版权,需要获取播放视频的凭证。

客户端上传视频必须解决的问题:

​ (1)前端获取到后端上传视频的凭证后,表示用户获得了上传视频的权限,用户可以无限上传。前端要做好防止用户恶意上传的解决措施。

​ (2)用户执行updata操作上传新的视频时,成功上传新的视频需要删除旧的视频,避免腾讯云中出现不会再复用的旧视频,占用不必要的资源。

分析后端需要的接口:

接口1:获取客户端上传视频的凭证。

接口2:根据视频的FIleID删除腾讯云中的视频。

接口3:获取播放视频的凭证。

数据库中视频表(video)的设计:

​ sql脚本代码:

CREATE TABLE `video` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `user_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '用户ID',
  `title` varchar(50) NOT NULL COMMENT '视频标题',
  `video_source_id` varchar(100) DEFAULT NULL COMMENT '云端视频资源',
  `video_original_name` varchar(100) DEFAULT NULL COMMENT '原始文件名称',
  `sort` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '排序字段',
  `clickRate` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '点击量',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `is_deleted` tinyint(3) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='直播回放';

​ 表的视图:

在这里插入图片描述

代码实现:
一、后端代码

(1)添加相关的maven依赖

		<!--腾讯云 vod点播服务对应依赖-->
        <dependency>
            <groupId>com.qcloud</groupId>
            <artifactId>vod_api</artifactId>
            <version>2.1.4</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- 腾讯点播服务获取播放签名的依赖 -->
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>4.2.2</version>
        </dependency>

(2)application.properties配置文件

# 服务端口
server.port=8202
# 服务名
spring.application.name=service-live

# 环境设置:dev、test、prod
spring.profiles.active=dev

# mysql数据库连接
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/yxzb_live?characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456

#返回json的全局时间格式
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8

#mybatis日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

#这里可以先扫描mapper文件,后面使用到mapper文件,不会出现找不到的问题
mybatis-plus.mapper-locations=classpath:com/gzcslgxy/yxzb/live/mapper/xml/*.xml

#(secretid密钥id、secretkey密钥key)用于上传视频;
tencent.cos.file.secretid=xxxxxxxxxxxxxxxxxxxx
tencent.cos.file.secretkey=xxxxxxxxxxxxxxxxxxxx

#腾讯云点播服务,配置appId,用于上传和删除、播放视频
tencent.video.appid=1317892833

(3)工具类ConstantProperti

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值