68 lines
3.0 KiB
JavaScript
68 lines
3.0 KiB
JavaScript
"use strict";
|
||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
var __metadata = (this && this.__metadata) || function (k, v) {
|
||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||
};
|
||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
const qiniu_1 = __importDefault(require("qiniu"));
|
||
const typedi_1 = require("typedi");
|
||
const index_1 = require("../config/index");
|
||
let QiNiu = class QiNiu {
|
||
constructor() {
|
||
this.FromBucket = index_1.config.qiniu.HLSconfig.FromBucket;
|
||
this.ToBucket = index_1.config.qiniu.HLSconfig.ToBucket;
|
||
this.VideoHlsParams = index_1.config.qiniu.HLSconfig.VideoHlsParams;
|
||
this.accessKey = index_1.config.qiniu.accessKey;
|
||
this.secretKey = index_1.config.qiniu.secretKey;
|
||
this.mac = new qiniu_1.default.auth.digest.Mac(this.accessKey, this.secretKey);
|
||
}
|
||
/**
|
||
*
|
||
* @param BucketName
|
||
* @constructor
|
||
*/
|
||
GenerateToken(BucketName = "vrcource") {
|
||
let putPolicy = new qiniu_1.default.rs.PutPolicy({
|
||
scope: BucketName,
|
||
expires: 7200
|
||
});
|
||
return putPolicy.uploadToken(this.mac);
|
||
}
|
||
/**
|
||
* 根据前端传递的 filename 文件名,对需要的视频进行切片配置,
|
||
* 返回给前端 token,前端拿到 token 后通过form data将视频和
|
||
* token 传递给七牛,七牛会根据token开始切片任务。这里不需要
|
||
* 配置七牛切片成功后的回调通知,因为已经可以通过基地址+m3u8文件名拿到
|
||
* 切片后的地址
|
||
* @param params
|
||
* @constructor
|
||
*/
|
||
GenerateHlsToken(params) {
|
||
let M3u8FileName = new Date().getTime();
|
||
let saveHlsEntry = qiniu_1.default.util.urlsafeBase64Encode(`${this.ToBucket}:${M3u8FileName}`);
|
||
const options = {
|
||
scope: `${this.FromBucket}:${params['filename']}`,
|
||
persistentOps: `${this.VideoHlsParams}${saveHlsEntry}`,
|
||
persistentPipeline: 'guaikem3u8',
|
||
};
|
||
let putPolicy = new qiniu_1.default.rs.PutPolicy(options);
|
||
return {
|
||
filePath: `${index_1.config.qiniu.HLSconfig.VideoBaseUrl}${M3u8FileName}`,
|
||
token: putPolicy.uploadToken(this.mac)
|
||
};
|
||
}
|
||
};
|
||
QiNiu = __decorate([
|
||
typedi_1.Service(),
|
||
__metadata("design:paramtypes", [])
|
||
], QiNiu);
|
||
exports.QiNiu = QiNiu;
|