hls.js - 如何增加预加载缓冲区大小
hls.js - how to increase the preloaded buffer size
我正在使用来自远程 src 的 ffmpeg 生成 hls 内容,但我的经验一直滞后,我在浏览器中无法理解。
例如,即使有说 out8.ts、out9.ts ... hls.js 玩家也会说 out7.ts 并且不加载 out8.ts 或 out9.ts.
它等到 out7.ts 几乎完成 播放然后它尝试加载 out.m3u8 其中将包含out8.ts 并且可能 out9.ts。但它这样做得太晚了,最终会导致滞后。我在本地主机上以高效的方式执行此操作。
一旦开始发生,这似乎会自行重复。
如何让 hls.js 更频繁地请求 m3u8 和 缓冲任何存在的东西?还是尽可能多?
此外,如果 已经说 1-10.ts 个文件,我怎样才能让 hls.js 从不是最后一个开始(虽然更接近生活) 但也许在 5.ts 上,所以它不会 运行 进入关于下一个更新的 m3u8 的这个紧迫的截止日期问题并且可能很长 11.ts 阻止它缓冲它?
我的选择:
new Hls({
autoStartLoad: true,
debug: App.isDevelopment(),
manifestLoadingTimeOut : 60000,
/*manifestLoadingMaxRetry : 9,*/
manifestLoadingRetryDelay : 500,
levelLoadingTimeOut : 60000,
/*levelLoadingMaxRetry : 9,*/
levelLoadingRetryDelay : 500,
fragLoadingTimeOut : 60000,
/*fragLoadingMaxRetry : 6,*/
fragLoadingRetryDelay : 250,
startFragPrefetch : true
});
使用 clapper 而不是 hls.js 来控制这些东西有什么区别吗?
您遇到的延迟可能与分段持续时间有关。对于直播流,较短的持续时间可能会导致对播放列表的更频繁请求,这可能会导致额外的网络流量。 Apple 建议 10 秒,但(我相信)ffmpeg 使用默认值 2 秒。如果您使用的是 ffmpeg 的 hls muxer,则可以使用 -hls_time
选项设置片段持续时间,如果您使用的是第一个片段,则可以使用 -segment_time
选项。我先试试这个。
HLS 规范指定 reloading the playlist 之间的时间由片段的目标持续时间决定,所以我想播放器必须遵守此规范才能符合规范。
您可以使用 EXT-X-START 标签 start playing the video at a specific point in time。
尝试使用 maxBufferLength.This 是保证的缓冲区长度 hls.js 将尝试达到,而不管 maxBufferSize。
我正在使用来自远程 src 的 ffmpeg 生成 hls 内容,但我的经验一直滞后,我在浏览器中无法理解。
例如,即使有说 out8.ts、out9.ts ... hls.js 玩家也会说 out7.ts 并且不加载 out8.ts 或 out9.ts.
它等到 out7.ts 几乎完成 播放然后它尝试加载 out.m3u8 其中将包含out8.ts 并且可能 out9.ts。但它这样做得太晚了,最终会导致滞后。我在本地主机上以高效的方式执行此操作。
一旦开始发生,这似乎会自行重复。
如何让 hls.js 更频繁地请求 m3u8 和 缓冲任何存在的东西?还是尽可能多?
此外,如果 已经说 1-10.ts 个文件,我怎样才能让 hls.js 从不是最后一个开始(虽然更接近生活) 但也许在 5.ts 上,所以它不会 运行 进入关于下一个更新的 m3u8 的这个紧迫的截止日期问题并且可能很长 11.ts 阻止它缓冲它?
我的选择:
new Hls({
autoStartLoad: true,
debug: App.isDevelopment(),
manifestLoadingTimeOut : 60000,
/*manifestLoadingMaxRetry : 9,*/
manifestLoadingRetryDelay : 500,
levelLoadingTimeOut : 60000,
/*levelLoadingMaxRetry : 9,*/
levelLoadingRetryDelay : 500,
fragLoadingTimeOut : 60000,
/*fragLoadingMaxRetry : 6,*/
fragLoadingRetryDelay : 250,
startFragPrefetch : true
});
使用 clapper 而不是 hls.js 来控制这些东西有什么区别吗?
您遇到的延迟可能与分段持续时间有关。对于直播流,较短的持续时间可能会导致对播放列表的更频繁请求,这可能会导致额外的网络流量。 Apple 建议 10 秒,但(我相信)ffmpeg 使用默认值 2 秒。如果您使用的是 ffmpeg 的 hls muxer,则可以使用 -hls_time
选项设置片段持续时间,如果您使用的是第一个片段,则可以使用 -segment_time
选项。我先试试这个。
HLS 规范指定 reloading the playlist 之间的时间由片段的目标持续时间决定,所以我想播放器必须遵守此规范才能符合规范。
您可以使用 EXT-X-START 标签 start playing the video at a specific point in time。
尝试使用 maxBufferLength.This 是保证的缓冲区长度 hls.js 将尝试达到,而不管 maxBufferSize。