2

我正在尝试编写一个 Web 服务(使用 C# 和 WebAPI,认为实际的服务器技术可能并不重要),它托管动态视频文件以供基本的 HTML5 视频元素使用。

这是我的情况和我的要求:

  • 视频正在动态转码,因此最终文件大小未知。我无法提供Content-Length. 但是,视频的持续时间是预先知道的。
  • 视频必须在页面加载时立即播放,即使它没有完成转码。
  • 用户必须能够通过 HTML5 视频控件在视频中向后和向前搜索。如果他们试图向前寻找未转码的点,则请求将阻塞,直到转码赶上。

我尝试使用206: Partial Content带有标题的响应,Content-Range但由于我无法提供 a content-length,Chrome 中的播放器似乎无法搜索它获得的第一块视频,而 Firefox 中的播放器甚至不会尝试下载比第一个更多的视频块。响应超出客户端要求的范围也是无效的,但视频播放器总是要求字节 0+。

如果没有内容长度,我考虑使用Transfer-Encoding: chunked和分块输出。但是,如果服务器不支持远程请求,Chrome 将不允许您搜索视频。

我还考虑过指定一个 1TB 的虚假内容长度或一些荒谬的东西,以便我可以执行范围响应选项,但我不知道这是否会影响进度条或搜索功能。HTML5 视频播放器是否根据文件大小或持续时间确定进度条的尺寸?

那么我的选择是什么?我确信这是一个以前解决过的问题。范围响应可以与分块编码结合使用吗?

4

0 回答 0