首页 > 解决方案 > 在不下载的情况下发送文件作为响应

问题描述

我尝试使用 HLS 构建一个 http 服务器来流式传输视频。我已经处理了如下的响应。

private void handleResponse(HttpExchange exchange, String fileNameValue) {
    OutputStream responseStream = exchange.getResponseBody();

    File file = new File(fileNameValue);
    try {
        String encoding = "UTF-8";
        String response = FileUtils.readFileToString(file, encoding);
        exchange.getResponseHeaders().set("Content-Type", "application/x-mpegURL");
        exchange.getResponseHeaders().set("Accept-Ranges", "bytes");
        exchange.getResponseHeaders().set("Cache-Control", "max-age=0, no-cache, no-store");
        exchange.sendResponseHeaders(200, response.length());
        responseStream.write(response.getBytes());
        responseStream.flush();
        responseStream.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

但是浏览器总是下载文件而不是播放它。而且 VLC 媒体播放器也不播放它。

我想得到这样的结果。 在此处输入图像描述

你能告诉我怎么做吗?一些用于研究的关键词也值得赞赏。

标签: javahttpvideo-streaming

解决方案


我发现他们的网站使用 xhr 发送请求,因此文件出现在网络部分。

之后我使用 hls.js 并得到相同的结果:)


推荐阅读