腾讯云点播及声音上传

文章目录

云点播(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;
    }
}
相关推荐
真上帝的左手9 小时前
19. 大数据- 湖仓一体&BI - 阿里云实践
大数据·阿里云·云计算
小新讲网安1 天前
云安全攻防实战:AWS与阿里云渗透测试全流程指南
安全·web安全·网络安全·阿里云·自动化·云计算·aws
行业研究员1 天前
腾讯云ADP:智能体平台封神榜
人工智能·microsoft·腾讯云·智能体·智能体平台·腾讯云adp
星野川崎2062 天前
电商多店运维:云机长期挂机频繁掉线、账号无故风控原因剖析与解决方案
大数据·运维·云计算·电商
AKAMAI2 天前
Akamai Cloud Pulse 审计日志现已全面开放使用
人工智能·云计算
刘梦薇2 天前
SSH连接失败connection reset解决办法
linux·运维·ubuntu·ssh·腾讯云
workflower2 天前
智能无人机成低空经济核心赛道
运维·人工智能·机器学习·机器人·云计算·无人机
运维全栈笔记2 天前
腾讯云 CVM 搭建 Ceph 集群部署笔记
笔记·ceph·腾讯云
海兰3 天前
【AI工具】腾讯云开源自研 AI 助手 Octop介绍及安装使用指南
人工智能·云计算·腾讯云
谷哥的小弟3 天前
腾讯云服务器安装Redis Stack图文教程
服务器·redis·腾讯云·redis stack