腾讯云点播及声音上传

文章目录

云点播(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;
    }
}
相关推荐
峰顶听歌的鲸鱼7 小时前
Kubernetes管理
运维·笔记·云原生·容器·kubernetes·云计算
阿里云云原生13 小时前
阿里云全新发布的 UModel 是什么
人工智能·阿里云·云计算·可观测·umodel
咕噜企业分发小米13 小时前
腾讯云与火山引擎多云管理工具如何实现应用部署合规?
网络·腾讯云·火山引擎
咕噜企业分发小米13 小时前
腾讯云多云管理工具如何与第三方合规工具集成?
云计算·腾讯云
阿里云云原生18 小时前
阿里云可观测联合 Datadog 发布 OpenTelemetry Go 自动插桩工具
阿里云·golang·云计算·可观测
孤岛悬城19 小时前
64 K8s安全机制
kubernetes·云计算·k8s
合新通信 | 让光不负所托20 小时前
边缘计算节点空间受限,用浸没式液冷光模块能同时满足小型化和高性能需求吗?
大数据·人工智能·阿里云·云计算·边缘计算
China_Yanhy20 小时前
生产级 Amazon MSK (Express 模式) 架构构建与选型实战白皮书
架构·kafka·云计算·aws
skywalk816320 小时前
阿里云的esc云服务器安装FreeBSD是否支持zfs文件系统
服务器·阿里云·云计算·freebsd
Kaede61 天前
排除网络故障需要做什么?查看网络故障的步骤
网络安全·云计算