当前位置: 首页 > 知识库问答 >
问题:

用Spring框架和Chrome建立视频流

洪季萌
2023-03-14

我的理解是,Chrome开始下载文件,这在理论上应该是可行的。该服务使用HTTP 200进行响应,并包括accept-ranges:bytescontent-length:filesize标头。文件化是已知的,因为我们可以将其作为元数据从S3中查询,而无需获取整个文件。包含这些头会导致浏览器取消下载,并再次请求文件的范围:bytes=0-whate头(其中whate是Chrome决定的块大小)。然后,服务使用HTTP 206(部分内容)和请求的字节范围进行响应,我们可以很容易地确定这些字节范围,因为S3支持相同的范围协议。Chrome然后向服务请求连续的块,直到流结束。

在Spring方面,我们在responseEntity 中发送数据(按照这个SO答案)。

然而,我们在实践中观察到,Chrome's在几百个字节后取消了它的第一个请求。但是,它发送另一个带有范围:bytes=0-头的请求,实际上请求整个文件。服务器用HTTP 206响应。结果,is只下载了几百字节的视频,视频显然没有开始播放。

有趣的是,在Firefox中,这一切都能正常工作。不幸的是,我们的应用程序需要支持Chrome。我们是不是漏掉了协议的某些部分?

共有1个答案

洪和风
2023-03-14

事实证明,我们在content-range响应标头中出现了一个Off by-One错误。

语法是content-range:bytes start-end/total。对于total10,如果要获得整个范围,需要指定字节0-9/10,而不是我们正在做的0-10/10

当然,由于实际文件的大小较大,以及这些文件中间的块的实际范围,这个错误比上一段中的人为示例更难注意到...__

 类似资料:
  • 问题内容: 我已经开发了一个Spring / JPA应用程序: 服务,存储库和域层即将完成 。 该 所缺的只是层是网络层 。我正在考虑将Playframework 2.0用于Web层,但不确定是否可以 在Playframework 2.0类中注入/使用spring bean 。 这可能吗?如果可以,怎么办? 问题答案: 您可以。已针对Play 2.5.x更新: https://github.com

  • 本文向大家介绍spring框架下websocket的搭建,包括了spring框架下websocket的搭建的使用技巧和注意事项,需要的朋友参考一下 本文基于Apach Tomcat 8.0.3+MyEclipse+maven+JDK1.7 spring4.0以后加入了对websocket技术的支持,撸主目前的项目用的是SSM(springMVC+spring+MyBatis)框架,所以肯定要首选s

  • 本文向大家介绍使用Python的Flask框架实现视频的流媒体传输,包括了使用Python的Flask框架实现视频的流媒体传输的使用技巧和注意事项,需要的朋友参考一下 Flask 是一个 Python 实现的 Web 开发微框架。这篇文章是一个讲述如何用它实现传送视频数据流的详细教程。 我敢肯定,现在你已经知道我在O'Reilly Media上发布了有关Flask的一本书和一些视频资料。在这些上面

  • 本文向大家介绍详解iOS中集成ijkplayer视频直播框架,包括了详解iOS中集成ijkplayer视频直播框架的使用技巧和注意事项,需要的朋友参考一下 ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明, 但是个人觉得还是不够详细, 在这里详细的讲一下在 iOS 中如何集成ijkplayer, 即便以前从没有接触过, 按着

  • 本文向大家介绍Thinkphp5框架实现图片、音频和视频文件的上传功能详解,包括了Thinkphp5框架实现图片、音频和视频文件的上传功能详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Thinkphp5框架实现图片、音频和视频文件的上传功能。分享给大家供大家参考,具体如下: 首先是同步上传,最为基础的上传的方式,点击表单提交之后跳转那种。如下前端代码 注意这里的enctype必须en

  • 我正在学习Django和Django REST框架。我正在尝试执行API并添加查看权限。 来自django。db从django导入模型。contrib。auth。模型导入用户 我的模特: 我的连载者: 我的看法: 当我尝试添加新“word”时-显示错误: 序列化程序或视图中存在问题?如何修复?