首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >寻找/浏览带有Spring和HTML5瓶颈的本地视频

寻找/浏览带有Spring和HTML5瓶颈的本地视频
EN

Stack Overflow用户
提问于 2018-11-17 22:37:28
回答 1查看 392关注 0票数 1

我正在创建一个本地视频库,但我无法锻炼如何提高视频搜索/擦除的性能。当我看到一个本地存储的视频文件时,它需要10-15秒才能开始播放,而在搜索栏中跳跃则需要45秒的时间。

用VLC打开视频,这一切都是即时的。使用HTML5播放器是有一个直接的限制,还是我的后端代码出现了问题?

为了提供视频,我在控制器中使用Springboot和下面的方法

代码语言:javascript
运行
复制
@GetMapping(value = "/videos/p/{id}", produces = "video/mp4")
public FileSystemResource videoSource(@PathVariable String id) {
    Optional<Video> optionalVideo = videoRepository.findById(id);

    return optionalVideo
            .map(video -> new FileSystemResource(new File(video.getAbsolutePath())))
            .orElse(null);
}

我在前面用一个简单的

代码语言:javascript
运行
复制
<video width="100%" controls>
  <source src="http://localhost:8080/videos/p/{{video.id}}" type="video/mp4">
</video>

有明显的方法来提高这里的表现吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-18 00:48:18

我找到了一些有趣的答案。但我也想出了如何使用轻松地完成这一任务。

这个职位勾勒出了达文·凯文( Davin )给出的令人敬畏的MultipartFileSender,它成功了,但还是有点慢。将InputStream更改为RandomAccessFile,这是另一个更低的答案,这使得擦擦几乎是即时的。

现在我知道了更多关于谷歌的信息,我找到了Jira机票来添加http字节范围的支持。最终导致了我的解决方案。

代码语言:javascript
运行
复制
@GetMapping(value = "/videos/p/{id}")
public ResponseEntity<UrlResource> getFullVideo(@PathVariable String id) throws MalformedURLException {
    Optional<Video> optionalVideo = videoRepository.findById(id);

    if (optionalVideo.isPresent()) {
        final String videoPath = optionalVideo.get().getAbsolutePath();
        final UrlResource video = new UrlResource(String.format("file:%s", videoPath));

        return ResponseEntity.status(HttpStatus.PARTIAL_CONTENT)
                .contentType(MediaTypeFactory.getMediaType(video)
                        .orElse(MediaType.APPLICATION_OCTET_STREAM))
                .body(video);
    }

    return ResponseEntity.noContent().build();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53356205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档