he2802 1 年之前
父節點
當前提交
2b1a0511c8

+ 26 - 7
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseSectionServiceImpl.java

@@ -11,6 +11,8 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.Page;
+import com.tencentcloudapi.vod.v20180717.models.MediaBasicInfo;
+import com.tencentcloudapi.vod.v20180717.models.MediaInfo;
 import com.zhongzheng.common.core.redis.RedisCache;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
@@ -32,6 +34,7 @@ import com.zhongzheng.modules.polyv.bo.PolyvLiveQueryBo;
 import com.zhongzheng.modules.polyv.service.IPolyvLiveService;
 import com.zhongzheng.modules.polyv.service.IPolyvVideoService;
 import com.zhongzheng.modules.polyv.vo.PolyvVideoQuerVo;
+import com.zhongzheng.modules.tencentcloud.service.IVodService;
 import net.polyv.live.v1.entity.chat.LiveGetMessageListResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -82,6 +85,9 @@ public class CourseSectionServiceImpl extends ServiceImpl<CourseSectionMapper, C
     @Autowired
     private IPolyvVideoService iPolyvVideoService;
 
+    @Autowired
+    private IVodService iVodService;
+
     @Autowired
     private IPolyvLiveService iPolyvLiveService;
 
@@ -354,15 +360,28 @@ public class CourseSectionServiceImpl extends ServiceImpl<CourseSectionMapper, C
                 }
             }
             if(bo.getSectionType()==1){
-                try{
-                    PolyvVideoQuerVo poly = iPolyvVideoService.queryById(bo.getRecordingUrl());
-                    if(Validator.isNotEmpty(poly)){
-                        bo.setDurationTime(new Long(DateUtils.durationFormat(poly.getDuration())));
+                if(Validator.isEmpty(bo.getViewSign())||bo.getViewSign()==1){
+                    try{
+                        PolyvVideoQuerVo poly = iPolyvVideoService.queryById(bo.getRecordingUrl());
+                        if(Validator.isNotEmpty(poly)){
+                            bo.setDurationTime(new Long(DateUtils.durationFormat(poly.getDuration())));
+                        }
+                    }catch (Exception e){
+                        errorLog+="第"+(size - Index)+"条:读取保利威时长错误。\r\n";
+                        continue;
+                    }
+                }else{
+                    try{
+                        MediaInfo mediaInfo = iVodService.describeMediaInfo(bo.getRecordingUrl());
+                        if(Validator.isNotEmpty(mediaInfo)){
+                            bo.setDurationTime(new Long(DateUtils.durationFormat(mediaInfo.getMetaData().getDuration().toString())));
+                        }
+                    }catch (Exception e){
+                        errorLog+="第"+(size - Index)+"条:读取保利威时长错误。\r\n";
+                        continue;
                     }
-                }catch (Exception e){
-                    errorLog+="第"+(size - Index)+"条:读取保利威时长错误。\r\n";
-                    continue;
                 }
+
             }
             if(bo.getSectionType()==2){
                 bo.setDurationTime(bo.getLiveEndTime().longValue() - bo.getLiveStartTime().longValue());

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/tencentcloud/service/IVodService.java

@@ -1,6 +1,8 @@
 package com.zhongzheng.modules.tencentcloud.service;
 
 
+import com.tencentcloudapi.vod.v20180717.models.MediaBasicInfo;
+import com.tencentcloudapi.vod.v20180717.models.MediaInfo;
 import com.zhongzheng.modules.tencentcloud.bo.FaceQueryBo;
 import com.zhongzheng.modules.tencentcloud.bo.InvoiceQueryBo;
 
@@ -10,6 +12,8 @@ public interface IVodService {
 
     Map<String,Object> describeMediaInfos(String[] fileIds);
 
+    MediaInfo describeMediaInfo(String fileId);
+
     Map<String,Object> vodSignRequest(String FileId);
 
 

+ 30 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/tencentcloud/service/impl/VodServiceImpl.java

@@ -21,6 +21,8 @@ import com.tencentcloudapi.ocr.v20181119.models.*;
 import com.tencentcloudapi.vod.v20180717.VodClient;
 import com.tencentcloudapi.vod.v20180717.models.DescribeMediaInfosRequest;
 import com.tencentcloudapi.vod.v20180717.models.DescribeMediaInfosResponse;
+import com.tencentcloudapi.vod.v20180717.models.MediaBasicInfo;
+import com.tencentcloudapi.vod.v20180717.models.MediaInfo;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.modules.alioss.bo.OssRequest;
@@ -83,6 +85,34 @@ public class VodServiceImpl implements IVodService {
         return null;
     }
 
+    @Override
+    public MediaInfo describeMediaInfo(String fileId) {
+        try{
+            String[] fileIds = new String[]{fileId};
+            Credential cred = new Credential(SecretId, SecretKey);
+            // 实例化一个http选项,可选的,没有特殊需求可以跳过
+            HttpProfile httpProfile = new HttpProfile();
+            httpProfile.setEndpoint("vod.tencentcloudapi.com");
+            // 实例化一个client选项,可选的,没有特殊需求可以跳过
+            ClientProfile clientProfile = new ClientProfile();
+            clientProfile.setHttpProfile(httpProfile);
+            // 实例化要请求产品的client对象,clientProfile是可选的
+            VodClient client = new VodClient(cred, "", clientProfile);
+            // 实例化一个请求对象,每个接口都会对应一个request对象
+            DescribeMediaInfosRequest req = new DescribeMediaInfosRequest();
+            req.setSubAppId(1306117675L);
+            //        String[] fileIdss = new String[]{"3270835015060309946"};
+            req.setFileIds(fileIds);
+            // 返回的resp是一个DescribeMediaInfosResponse的实例,与请求对象对应
+            DescribeMediaInfosResponse resp = client.DescribeMediaInfos(req);
+
+            return resp.getMediaInfoSet()[0];
+        }catch (TencentCloudSDKException e){
+            System.out.println("错误"+e.getMessage());
+        }
+        return null;
+    }
+
     @Override
     public Map<String, Object> vodSignRequest(String FileId) {
         Integer AppId = 1306117675;