hls.js - 如何增加预加载的缓冲区大小

时间:2016-03-10 17:41:25

标签: ffmpeg video.js http-live-streaming live-streaming clappr

我使用来自远程src的ffmpeg生成hls内容,并且我在浏览器中保持经验滞后,我不明白。

例如,即使有说 out8.ts,out9.ts ... hls.js播放器将会显示 out7.ts并且不会加载out8.ts或out9 .ts。

等到out7.ts 几乎完成播放然后尝试加载 out.m3u8 ,其中包含out8.ts和可能out9.ts.但它这么晚才这样做,最终导致滞后。我在localhost上以有效的方式执行此操作。

一旦它开始发生,这似乎会重演。

如何让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在控制此类事情方面有什么区别吗?

2 个答案:

答案 0 :(得分:1)

您遇到的延迟可能会延迟到细分持续时间。对于直播流,较短的持续时间会导致对播放列表的更频繁请求,这可能导致额外的网络流量。 Apple推荐10秒,但(我相信)ffmpeg默认使用2秒。如果您使用ffmpeg' s hls muxer,则可以使用-hls_time选项设置分段持续时间;如果使用分段1,则可以使用-segment_time选项设置分段持续时间。我先试试这个。

HLS规范指定reloading the playlist之间的时间由段的目标持续时间决定,因此我猜如果要符合规范,播放器必须遵守此标准。

您可以将EXT-X-START标记用于start playing the video at a specific point in time

答案 1 :(得分:0)

尝试使用maxBufferLength。这是hls.js尝试达到的保证缓冲区长度,与maxBufferSize无关。