【问题标题】:video is not fetching completly,视频未完全获取,
【发布时间】:2017-12-28 10:49:20
【问题描述】:

我想从 mongodb 获取视频而不是它应该播放该视频的视频大小,但它只播放几秒钟,我给 maxUploadSize 是 20mb 和 maxInMemorySize 也是 20mb,但在 jsp 页面上,它甚至只获取 1mb 视频视频大小超过 1mb。 我不知道该怎么做,视频应该根据视频大小播放完整

这里是控制器

@RequestMapping(value = "/welcome-video-controller/{videoObj}", produces = "video/webm")
@ResponseBody
public ResponseEntity<byte[]> getVideoForLoginPage(@PathVariable String videoObj, HttpServletResponse response)
        throws IOException {

    LOG.info("Entry :: getVideoForPost");
    BufferedImage bufferedVideoForPost = null;
    URL resourcePath = null;
    byte[] videoArray = null;
    ResponseEntity<byte[]> result = null;
    LOG.info("videoObj-->" + videoObj);
    File videoFromMongo = new File(VIDEO_FROM_PATH + videoObj);
    GridFSDBFile videoFile = MongoUtility.getVideoFileFromMongo(videoObj);
    videoFile.writeTo(videoFromMongo);
    bufferedVideoForPost = ImageIO.read(videoFromMongo);
    videoFile.getInputStream();
    HttpHeaders headers = new HttpHeaders();
    headers.setContentLength((int) videoFile.getLength());
    videoArray = new byte[(int) videoFile.getLength()];
    result = new ResponseEntity<byte[]>(videoArray, headers, HttpStatus.OK);
    videoFile.getInputStream().read(videoArray);
    LOG.info("videoArray-->" + videoArray);
    LOG.info("videoArray size-->" + videoArray.length);
    return result;
}

这是 html 编码

<c:set value="${videoPostDetail.videoNames}" var="videoObj" />
<c:if test="${videoObj ne ''}">
    <video width="96%" height="220" controls id="sideVideo">
          <source src='/SocialNetworkingApp/welcome-video-controller/${videoObj}.do' type='video/webm'>

    </video>
</c:if>

它应该播放完整的视频,我尝试了很多但没有任何效果,请告诉什么问题,

【问题讨论】:

    标签: spring mongodb spring-mvc html5-video


    【解决方案1】:

    我得到了解决方案,实际上问题是块大小,我设置了文件的块大小,默认情况下块大小小于 1 mb, 现在我将此行添加到代码 gfsFile.setChunkSize(uploadVideoFile.length());并且工作正常。

        public static void saveVideoIntoMongo(File uploadVideoFile, String videoFilePath, String newVideoFileName)
            throws IOException {
    
        LOG.info("Entry :: saveVideoIntoMongo");
        LOG.info("videoFilePath-->" + videoFilePath);
        LOG.info("newVideoFileName-->" + newVideoFileName);
        LOG.info("uploadVideoFile-->" + uploadVideoFile);
    
        DB db = getMongoDBInstance("videoDb");// later on take it from the properties file instead of hardcoding
        GridFS gfsPhoto = getGridFSForFiles(db, "video");
    
        if (!("").equals(newVideoFileName)) {
            GridFSInputFile gfsFile = gfsPhoto.createFile(uploadVideoFile);
            gfsFile.setChunkSize(uploadVideoFile.length());//setting chunkSize
            gfsFile.setFilename(newVideoFileName);
            gfsFile.save();
    
        }
    
        LOG.info("Exit :: saveVideoIntoMongo");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-25
      • 2012-12-06
      • 2013-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多