腾讯云点播及声音上传

文章目录

云点播(Video on Demand,VOD)面向音视频、图片等媒体,提供制作上传、存储、转码、媒体处理、媒体 AI、加速分发播放、版权保护等一体化高品质媒体服务。

需要开通腾讯云服务https://cloud.tencent.com/

快速介入流程:云点播 快速入门-文档中心-腾讯云 (tencent.com)

1、开通腾讯云点播

开通主要包括以下几个主要步骤:

  1. 微信扫描快速注册(也有其他注册方式):https://cloud.tencent.com/register

  2. 扫描授权完成之后,"立即实名认证" --> "个人实名认证",按照提示完成认证过程。

  3. 开通云点播服务:https://console.cloud.tencent.com/vod/register

    同意授权并开通

cpp 复制代码
VOD 的英文全称是 Video On Demand,即视频点播技术,也称为交互式电视点播系统。
这是一种全新的信息服务方式,集计算机技术、网络技术、多媒体技术于一身,
解决了传统电视受时空限制的束缚,用户可以根据自己的需求选择观看的节目和观看时间。






2、获取腾讯云API密钥

上传视频需要使用到开发者的 API 密钥(即 SecretId 和 SecretKey)

点击右上角用户下拉菜单中的"访问管理" --> 访问密钥 --> API密钥管理






一路下一步,即可完成创建,最终出现如下页面:

一定要把SecretId和SecretKey记录下来。

cpp 复制代码
主账号ID:主应用ID
用户名:
登录密码:
SecretId:
SecretKey:

3、完成声音上传

云点播 Java SDK-开发指南-文档中心-腾讯云https://cloud.tencent.com/document/product/266/10276

3.1、引入依赖

3.2、参考:接入点地域

上传存储设置 - 云点播 - 控制台https://console.cloud.tencent.com/vod/upload-storage


云点播 媒体上传综述-开发指南-文档中心-腾讯云https://cloud.tencent.com/document/product/266/9760

本产品所有接口 Region 字段的可选值如下表所示:

地域 取值
亚太东南(曼谷) ap-bangkok
华北地区(北京) ap-beijing
西南地区(成都) ap-chengdu
西南地区(重庆) ap-chongqing
华南地区(广州) ap-guangzhou
港澳台地区(中国香港) ap-hongkong
亚太东南(雅加达) ap-jakarta
亚太南部(孟买) ap-mumbai
亚太东北(首尔) ap-seoul
华东地区(上海) ap-shanghai
华东地区(上海金融) ap-shanghai-fsi
华南地区(深圳金融) ap-shenzhen-fsi
亚太东南(新加坡) ap-singapore
亚太东北(东京) ap-tokyo
欧洲地区(法兰克福) eu-frankfurt
美国东部(弗吉尼亚) na-ashburn
美国西部(硅谷) na-siliconvalley
北美地区(多伦多) na-toronto
南美地区(圣保罗) sa-saopaulo

3.3、参考:任务流设置

文档说明:https://cloud.tencent.com/document/product/266/33819

预置任务流:

云点播服务为用户提供5条预置的任务流,该任务流包含了自适应码流任务、截图任务(雪碧图任务)、截取封面图任务,其中详细参数如下:

任务流名称 任务类型 任务模板/ID
LongVideoPreset 转自适应码流 Adpative-HLS(10)
截图 SpriteScreenshot(10)
截取封面 TimepointScreenshot(10)
SimpleAesEncryptPreset 转自适应码流 Adpative-HLS-Encrypt(12)
截图 SpriteScreenshot(10)
截取封面 TimepointScreenshot(10)
WidevineFairPlayPrese 转自适应码流 Adpative-HLS-FairPlay(11) Adpative-HLS-Widevine(13)
截图 SpriteScreenshot(10)
截取封面 TimepointScreenshot(10)
SDMC-WidevineFairPlayPreset 转自适应码流 SDMC-Adpative-HLS-FairPlay(31) SDMC-Adpative-DASH-Widevine(41)
截图 SpriteScreenshot(10)
截取封面 TimepointScreenshot(10)
MultiDRMPreset 转自适应码流 Adpative-HLS-EncryptBase(14) Adpative-HLS-Widevine(13) Adpative-HLS-FairPlay(11)
截图 SpriteScreenshot(10)
截取封面 TimepointScreenshot(10)

任务流仅支持选择配置好的模板。

3.4、首先修改配置:

3.4.1、

yaml 复制代码
server:
  port: 8501
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 查看日志
feign:
  sentinel:
    enabled: true
spring:
  main:
    allow-bean-definition-overriding: true #当遇到同样名字的时候,是否允许覆盖注册
  cloud:
    sentinel:
      transport:
        dashboard: 192.168.74.148:8858
    openfeign:
      lazy-attributes-resolution: true #开启懒加载,否则启动报错
      client:
        config:
          default:
            connectTimeout: 30000
            readTimeout: 30000
            loggerLevel: basic
  data:
    redis:
      host: 192.168.74.148
      port: 6379
      database: 0
      timeout: 1800000
      password: 123456
      jedis:
        pool:
          max-active: 20 #最大连接数
          max-wait: -1    #最大阻塞等待时间(负数表示没限制)
          max-idle: 5    #最大空闲
          min-idle: 0     #最小空闲
  kafka:
    bootstrap-servers: 192.168.74.148:9092
    producer:
      retries: 3  #设置大于0的值,则客户端会将发送失败的记录重新发送
      acks: all
      batch-size: 16384
      buffer-memory: 33554432
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
    consumer:
      group-id: service-album
      enable-auto-commit: true
      auto-offset-reset: earliest
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://192.168.74.148:3306/tingshu_album?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=true
    username: root
    password: 123456
    hikari:
      connection-test-query: SELECT 1
      connection-timeout: 60000
      idle-timeout: 500000
      max-lifetime: 540000
      maximum-pool-size: 10
      minimum-idle: 5
      pool-name: GuliHikariPool
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
  servlet:
    multipart:
      max-file-size: 10MB     #单个文件最大限制
      max-request-size: 20MB  #多个文件最大限制
minio:
  endpointUrl: http://192.168.74.148:9000
  accessKey: admin
  secretKey: admin123456
  bucketName: sph
vod:
  appId: 1320762610
  secretId: AKIDlUNRjBb8dFoRCtUE7ykVLB7CHVq9avKk
  secretKey: Wr23xx0w1GbsBazVyUuDYr5Mbp29IVer
  region: ap-shanghai
  procedure: SimpleAesEncryptPreset #任务流
  tempPath: D:\\project-1108\\tempPath
  playKey: wrTwwu8U3DRSRDgC8l7q  #播放加密key

3.5、TrackInfoApiController --》 uploadTrack()

java 复制代码
@Tag(name = "声音管理")
@RestController
@RequestMapping("api/album/trackInfo")
@SuppressWarnings({"unchecked", "rawtypes"})
public class TrackInfoApiController {
	@PostMapping("uploadTrack")
	public Result<Map<String, Object>> uploadTrack(MultipartFile file){

		Map<String, Object> map = this.vodService.uploadTrack(file);
		return Result.ok(map);
	}
}

3.6、VodServiceImpl --》 uploadTrack()

3.6.1、UploadFileUtil

java 复制代码
package com.atguigu.tingshu.common.util;

import lombok.SneakyThrows;
import org.joda.time.DateTime;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;


public class UploadFileUtil {

    /**
     * 文件上传到临时路径
     * @param file
     * @return
     */
    @SneakyThrows
    public static String uploadTempPath(String tempPath, MultipartFile file) {
        if (null == file) return "";
        String date = new DateTime().toString("yyyyMMdd");
        String filePath = tempPath + File.separator + date;
        File curFlie = new File(filePath);
        if (!curFlie.exists()) {
            curFlie.mkdirs();
        }
        filePath = filePath + File.separator + file.getOriginalFilename();
        file.transferTo(new File(filePath));
        return filePath;
    }

}
java 复制代码
@Service
public class VodServiceImpl implements VodService {

    @Autowired
    private VodConstantProperties vodConstantProperties;

    @Override
    public Map<String, Object> uploadTrack(MultipartFile file) {
        // 初始化一个上传客户端对象
        VodUploadClient client = new VodUploadClient(vodConstantProperties.getSecretId(), vodConstantProperties.getSecretKey());

        // 构造上传请求对象
        VodUploadRequest request = new VodUploadRequest();
        String tempPath = UploadFileUtil.uploadTempPath(vodConstantProperties.getTempPath(), file);
        request.setMediaFilePath(tempPath);

        // 调用上传
        try {
            VodUploadResponse response = client.upload(vodConstantProperties.getRegion(), request);

            Map<String, Object> map = new HashMap<>();
            map.put("mediaUrl", response.getMediaUrl());
            map.put("mediaFileId", response.getFileId());
            System.out.println(map);
            return map;
        } catch (Exception e) {
            // 业务方进行异常处理
            e.printStackTrace();
        }
        return null;
    }
}
相关推荐
weixin_3077791316 小时前
在AWS上使用Flume搜集分布在不同EC2实例上的应用程序日志具体流程和代码
python·flask·云计算·flume·aws
Linux运维老纪19 小时前
K8s之Service详解(Detailed Explanation of K8s Service)
服务器·网络·云原生·容器·kubernetes·云计算·运维开发
weixin_3077791319 小时前
AWS EMR使用Apache Kylin快速分析大数据
大数据·数据仓库·云计算·aws·kylin
weixin_307779131 天前
AWS EMR上的Spark日志实时搜索关键指标网页呈现的设计和实现
大数据·python·spark·云计算·aws
佛州小李哥2 天前
通过亚马逊云科技Bedrock打造自定义AI智能体Agent(上)
人工智能·科技·ai·语言模型·云计算·aws·亚马逊云科技
Linux运维老纪2 天前
DNS缓存详解(DNS Cache Detailed Explanation)
计算机网络·缓存·云原生·容器·kubernetes·云计算·运维开发
ivwdcwso2 天前
云计算部署模式全面解析
云计算
.生产的驴3 天前
MYSQL 商城系统设计 商品数据表的设计 商品 商品类别 商品选项卡 多表查询
数据库·mysql·搜索引擎·性能优化·云计算·状态模式·多分类
weixin_307779133 天前
PyDeequ库在AWS EMR启动集群中数据质量检查功能的配置方法和实现代码
大数据·python·spark·云计算·aws
会敲代码的Steve3 天前
本地Harbor仓库搭建流程
运维·分布式·云计算