现在视频播放太慢,上传的视频进行切片处理,修改常用的七牛云上传方法,增加切片处理方法,记录一下
public class QiniuCloudService{
private UploadManager uploadManager;
private String token;
private Auth auth;
private OperationManager operater;
public QiniuCloudService(CloudConfig config){
this.config = config;
//初始化
init();
}
private void init(){
uploadManager = new UploadManager(new Configuration(Zone.autoZone()));
auth = Auth.create(config.getQiniuAccessKey(), config.getQiniuSecretKey());
token = auth.uploadToken(config.getQiniuBucketName());
}
/**
* 上传
* @param data
* @param path
* @return
* @throws QiniuException
*/
public String upload(byte[] data, String path) {
try {
Response res = uploadManager.put(data, path, token);
if (!res.isOK()) {
throw new RuntimeException("上传七牛云出错:" + res.toString());
}
} catch (Exception e) {
throw new RRException("上传文件失败", e);
}
return config.getQiniuDomain() + "/" + path;
}
/**
* 切片处理
* @param data
* @param path
* @return
* @throws QiniuException
*/
public String uploadFop(byte[] data, String path) throws QiniuException {
String resultUrl = this.upload(data, path);
operater = new OperationManager(auth, new Configuration(Zone.autoZone()));
//设置当前要转码的视频的所在空间,即path所在空间
String bucket = "sp-tv";
//设置转码操作参数
String fops = "选择合适的转码参数";
//设置转码的队列
String pipeline = "sp";
//可以对转码后的文件进行使用saveas参数自定义命名,当然也可以不指定文件会默认命名并保存在当前空间。
//目标空间:文件路径
String urlbase64 = UrlSafeBase64.encodeToString("sp-hls-tv:" + path + ".m3u8");
String pfops = fops + "|saveas/" + urlbase64;
//设置pipeline参数
StringMap params = new StringMap().putWhen("force", 1, true).putNotEmpty("pipeline", pipeline);
try {
String persistid = operater.pfop(bucket, path, pfops, params);
} catch (QiniuException e) {
//捕获异常信息
Response r = e.response;
// 请求失败时简单状态信息
System.out.println(r.toString());
try {
// 响应的文本信息
System.out.println(r.bodyString());
} catch (QiniuException e1) {
//ignore
}
}
return resultUrl;
}
}