首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Spring Boot2控制器StreamingResponseBody实现流式视频文件mp4

使用Spring Boot2控制器StreamingResponseBody实现流式视频文件mp4
EN

Stack Overflow用户
提问于 2020-10-14 02:00:30
回答 1查看 1.3K关注 0票数 0

我正在尝试使用Spring Boot2流式传输视频文件mp4,我遵循了一些教程,解决方案应该很简单……就像我在下面复制的控制器一样...但别为我工作。

我不明白为什么..。当我将url放入浏览器时,默认的视频播放器就会出现,正在加载...超时后,我在浏览器控制台中收到"net::ERR_CONTENT_LENGTH_MISMATCH 200“。

如果我省略了headers.add("Content-Length",Long.toString(file.length();加载速度非常快,但没有发生任何事情...

代码语言:javascript
复制
@Controller
public class StreamController {

    @RequestMapping(path = { "/stream-video-file" }, method = RequestMethod.GET)
    public ResponseEntity<StreamingResponseBody> streamFile(
            HttpServletRequest request,
            HttpServletResponse response) {

        File file = new File("/path/to/file.mp4");
        if (!file.isFile()) {
            return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);

        }

        StreamingResponseBody stream = out -> {

            try {
                final InputStream inputStream = new FileInputStream(file);

                byte[] bytes = new byte[1024];
                int length;
                while ((length = inputStream.read(bytes)) >= 0) {
                    out.write(bytes, 0, length);
                }
                inputStream.close();
                out.flush();

            } catch (final Exception e) {
                LOG.error("Exception while reading and streaming data {} ", e);
            }

        };

        final HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Type", "video/mp4");
        headers.add("Content-Length", Long.toString(file.length()));

        return ResponseEntity.ok().headers(headers).body(stream);
    }
}

我错过了什么?...

编辑

我找到了另一种方法来完成这项工作,不使用StreamingResponseBody,但使用响应头"Range-Content“。

这里有一个非常好的解释:HTTP Range header

这里:https://github.com/saravanastar/video-streaming

EN

回答 1

Stack Overflow用户

发布于 2020-10-15 17:29:55

注释这一行:

代码语言:javascript
复制
headers.add("Content-Type", "video/mp4");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64340673

复制
相关文章

相似问题

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