我试图用Spring Boot 2流式传输视频文件mp4,我遵循了一些教程,解决方案应该很简单...
我不明白为什么。。当我将url放入浏览器时,默认的视频播放器出现,加载。。。超时后,我在浏览器控制台中收到一个“net::ERR_CONTENT_LENGTH_MISMATCH 200”。。
如果我省略标题。添加(“内容长度”,Long.toString(file.Length());装载速度很快,但什么也没发生。。。
@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);
}
}
我错过了什么?。。。
编辑-
我找到了另一种方法来完成这项工作,不使用Streaming响应体,而是使用响应头“范围-内容”。
这里有一个很好的解释:HTTP范围头
这里:https://github.com/saravanastar/video-streaming
评论这一行:
headers.add("Content-Type", "video/mp4");
问题内容: Tl; Dr-问题: 用Node.js处理将视频文件流传输到html5视频播放器以 使视频控件继续工作 的正确方法是什么 ? 我 认为 这与处理标头的方式有关。无论如何,这是背景信息。代码 有点 冗长,但是非常简单。 客户: 服务器: 但是此方法仅限于大小小于1GB的文件。 流式传输(任何大小)视频文件 通过利用,服务器可以读取流中的文件,而不是一次将其全部读取到内存中。这听起来像做事
问题内容: Tl; Dr-问题: 用Node.js处理将视频文件流传输到html5视频播放器以 使视频控件继续工作 的正确方法是什么 ? 我 认为 这与处理标头的方式有关。无论如何,这是背景信息。代码 有点 冗长,但是非常简单。 使用Node将小视频文件流化为HTML5视频很容易 我学习了如何非常轻松地将小型视频文件流式传输到HTML5视频播放器。使用此设置,控件可以正常工作,而我的视频也完美无缺
将RTMP流作为输入或输出处理,并且运行良好。 我想将一些视频(由python脚本管理的动态播放列表)流到RTMP服务器上,我目前正在做一些非常简单的事情:用FFMPEG将我的视频一个接一个地流到RTMP服务器上,但是这会在每次视频结束时导致连接中断,当下一个视频开始时,流就准备好了。 我想流那些视频没有任何连接中断连续,然后流可以被正确地观看。 我使用这个命令将我的视频一个接一个地流到服务器
用Node.js处理将视频文件流到html5视频播放器以使视频控件继续工作的正确方法是什么? 我认为这与头的处理方式有关。不管怎样,这是背景资料。代码有点长,但是,它非常简单。 我学会了如何将小视频文件流式传输到HTML5视频播放器。有了这个设置,控制工作没有任何工作,我的部分,视频流完美。这里有一个完整的工作代码和示例视频的工作副本,可以在Google Docs上下载。 客户: 服务器: 但此方
问题内容: 我想使用servlet将音频/视频文件流式传输到Web。 我尝试使用以下servlet: 以及以下HTML: 但是,播放器只是在加载…正在加载…正在加载… 这是怎么引起的,我该如何解决? 问题答案: 许多媒体播放器要求服务器支持所谓的HTTP范围请求。也就是说,它必须能够根据要求返回带有标头的媒体文件的特定部分。例如,在10MB长的文件中,只有位于精确索引1000的字节,直到2000为
问题内容: 我正在做一个使用HTML和Javascript的项目,它将与本地文件一起在本地运行。我需要通过输入选择一个文件,获取文件信息,然后决定是否将其添加到列表中并进行复制。如果我决定使用它,则必须将其放在队列中以备后用。否则,我将丢弃并选择另一个文件。 我面临的问题是我无法找到一种仅通过在输入中选择视频持续时间来获得视频持续时间的方法。 我进行了很多搜索,但没有找到任何方法来获取持续时间。在