Nginx上的HLS,未按预期停止

温尼·格伦农

使用https://gist.github.com/45sound/bd2a5ee699e428d63bcd作为http://54.204.158.100/1.m3u8(您也可以直接下载)

http://54.204.158.100/hls/clock.mp4是源mp4。

http://54.204.158.100/hls/clock.mp4.ts?start=0.0&end=4.99是要播放的片段。

在osmfhls.kutu.ru播放器中,播放时间为6.99秒,而不是4.99秒。

为什么是这样?

航空

您的Nginx HLS模块已配置为服务器7s片段。实际持续时间为7.180s

curl "http://<ip_address>/hls/clock.mp4.m3u8"

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:7
#EXT-X-PLAYLIST-TYPE:VOD

#EXTINF:7.200,
clock.mp4.ts?start=0.000&end=7.200
#EXTINF:7.200,
clock.mp4.ts?start=7.200&end=14.400
#EXTINF:5.400,
clock.mp4.ts?start=14.400&end=19.800
...

http://<ip_address>/hls/clock.mp4.ts?start=0.0&end=4.99请求的情况下,如果播放器在之后忽略了查询字符串,.ts则它将仅播放第一段,总持续时间7.180s为模块中配置的时间检查Nginxaccess.log以查看其要求。

更新

检查mp4文件的规格后,我注意到您使用的帧速率为的GOP大小这意味着关键帧每秒钟当您将带有and查询字符串的URL传递给Nginx时,它显然会尝试返回两个关键帧之间的完整部分,并且不会切入确切的时间戳。6025160 / 25 = 2.4startend

在和的情况下start = 1.0end = 2.2此操作不起作用,因为第一个完整间隔在0.0之间2.4forstart = 0end = 4.99它将从开始播放0.07.2因为2.4 x 2 = 4.8小于4.99

文档没有说明这是否是所需的行为。通常,为了避免出现问题,您必须将目标持续时间设置为等于关键帧间隔的倍数

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章