Video.js 下载块而不是整个视频
Video.js download chunk instead of the whole video
我正在使用 VideoJs 播放各种视频。有些比其他的大。
这是一个简单的场景。一段视频开始播放,总长度为 100mb,持续时间为 10 分钟。如果用户跳到第 2 分钟,则会调用后端来为整个剩余视频提供服务器。
就用户体验而言,这并不好 goes.The 下载时间可能会很长,播放器会一直卡在加载中,直到完成。
理想情况下,我希望它能以 5-10 秒为单位进行下载。
老实说 javascript 不是我的强项,所以我真的不知道该怎么做。
后端接受字节范围。我还有清漆。
此外,如果我当前使用的视频播放器不正常或由于某种原因不支持我正在寻找的内容,我也不反对使用其他视频播放器。
非常感谢任何指向正确方向的信息。
对于遇到此问题并遇到相同问题的任何人:
https://info.varnish-software.com/blog/caching-partial-objects-varnish
还要确保 varnish 转发范围 header。
这很可能是您的文件或服务器配置的问题,不一定是 VideoJS。当您希望用户能够在当前缓冲区之外进行搜索时,您通常是在谈论 psueudo streaming。
为此,您的服务器必须:
- 支持 byte-range 请求(您表示您的 back-end 确实支持此请求)
- Return正确的
content-type
header
既然你说你的服务器确实支持 byte-range 请求,我会仔细检查 content-type
header.
此外,如果您使用的是 H.264 MP4 文件,您可能需要通过移动元数据来优化它们以进行流式传输 (MOOV atom) to the beginning of the file. Some video encoders also refer to this as "fast start". A standalone application that can do this to already encoded MP4s is qtfaststart。
否则,VideoJS应该支持自动搜索。您可以在 JSFiddle 上找到它们的许多示例。
您也可以尝试以编程方式进行搜索,看看其行为是否有任何不同:
let player = VideoJS.setup("video");
player.play();
player.currentTime(340); // time to seek to
我正在使用 VideoJs 播放各种视频。有些比其他的大。 这是一个简单的场景。一段视频开始播放,总长度为 100mb,持续时间为 10 分钟。如果用户跳到第 2 分钟,则会调用后端来为整个剩余视频提供服务器。
就用户体验而言,这并不好 goes.The 下载时间可能会很长,播放器会一直卡在加载中,直到完成。
理想情况下,我希望它能以 5-10 秒为单位进行下载。
老实说 javascript 不是我的强项,所以我真的不知道该怎么做。
后端接受字节范围。我还有清漆。
此外,如果我当前使用的视频播放器不正常或由于某种原因不支持我正在寻找的内容,我也不反对使用其他视频播放器。
非常感谢任何指向正确方向的信息。
对于遇到此问题并遇到相同问题的任何人:
https://info.varnish-software.com/blog/caching-partial-objects-varnish
还要确保 varnish 转发范围 header。
这很可能是您的文件或服务器配置的问题,不一定是 VideoJS。当您希望用户能够在当前缓冲区之外进行搜索时,您通常是在谈论 psueudo streaming。
为此,您的服务器必须:
- 支持 byte-range 请求(您表示您的 back-end 确实支持此请求)
- Return正确的
content-type
header
既然你说你的服务器确实支持 byte-range 请求,我会仔细检查 content-type
header.
此外,如果您使用的是 H.264 MP4 文件,您可能需要通过移动元数据来优化它们以进行流式传输 (MOOV atom) to the beginning of the file. Some video encoders also refer to this as "fast start". A standalone application that can do this to already encoded MP4s is qtfaststart。
否则,VideoJS应该支持自动搜索。您可以在 JSFiddle 上找到它们的许多示例。
您也可以尝试以编程方式进行搜索,看看其行为是否有任何不同:
let player = VideoJS.setup("video");
player.play();
player.currentTime(340); // time to seek to