gpt4 book ai didi

ios - HLS 'EVENT' 播放列表无法在播放器中启动

转载 作者:IT王子 更新时间:2023-10-29 07:59:33 34 4
gpt4 key购买 nike

我的 HLS 播放列表如下所示:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-PLAYLIST-TYPE:EVENT
#EXT-X-TARGETDURATION:10
#EXT-X-ALLOW-CACHE:NO
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:9.97667,
https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear1/fileSequence0.ts
#EXTINF:9.97667,
https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear1/fileSequence1.ts
#EXTINF:9.97667,
https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear1/fileSequence2.ts
#EXTINF:9.97667,
https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear1/fileSequence3.ts

它们属于 EVENT类型,意思是, block 在可用时附加,当所有 block 都存在时,#EXT-X-ENDLIST标记附加在末尾。

所以当所有 block 都上传后,我们最终得到一个看起来像这样的播放列表:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-PLAYLIST-TYPE:EVENT
#EXT-X-TARGETDURATION:10
#EXT-X-ALLOW-CACHE:NO
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:9.97667,
https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear1/fileSequence0.ts
#EXTINF:9.97667,
https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear1/fileSequence1.ts
#EXTINF:9.97667,
https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear1/fileSequence2.ts
#EXTINF:9.97667,
https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear1/fileSequence3.ts
#EXTINF:9.97667,
https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear1/fileSequence4.ts
#EXTINF:9.97667,
https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear1/fileSequence5.ts
#EXT-X-ENDLIST

我们发现所有客户都有奇怪的行为。如果您在上传第一个 block (或者甚至在 3 个 block 之后)时在 iOS 和 Safari 中打开 m3u8 播放列表,播放器将开始播放视频。但是偶尔它会停止,并且无法恢复。通常情况下,它甚至不会开始播放。

完全形成的播放列表(即带有 #EXT-X-ENDLIST 标签)可以完美播放。就在播放列表部分完成时。

我们试过各种播放器:Quicktime、Safari、iOS、VLC、Flowplayer等,都有各种各样的问题,但这个是最紧迫的。

如果您能深入了解从何处着手解决此问题,我们将不胜感激。

编辑:我们已经尝试了 HLS.js,它运行得很好。用户体验也很好

编辑 2:要重现,我建议使用某种本地 HTTP 服务器(我使用 python -m SimpleHTTPServer 提供上面的播放列表。然后将文件直接附加到播放列表以模拟文件上传,然后观看球员休息。

编辑 3:好的,我已经构建了一个简单的测试工具来观察行为。 https://github.com/dbousamra/m3u8-example 运行 node app.js然后尝试 open http://localhost:3001/playlist.m3u8在 Safari 或任何你想要的播放器中。它应该可以正常播放,因为它是一个完整的播放列表。**

但是,如果您添加查询参数 ?start=<some unix timestamp> ,它将模拟事件的附加,每 6 秒 1 个 block ,从该时间戳开始,直到所有 block 都完成,此时它将附加一个 #EXT-X-ENDLIST。行。

示例网址:http://localhost:3001/playlist.m3u8?start=1460092250872

编辑 5:我现在已经在 Heroku 上找到它了:http://guarded-mesa-71212.herokuapp.com/playlist.m3u8?start=

最佳答案

事情是这样的:

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-PLAYLIST-TYPE:EVENT
#EXT-X-TARGETDURATION:11
#EXT-X-ALLOW-CACHE:NO
#EXT-X-MEDIA-SEQUENCE:0

如果你返回上面的文件,safari 根本不会请求下一个文件,播放就死了。

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-PLAYLIST-TYPE:EVENT
#EXT-X-TARGETDURATION:11
#EXT-X-ALLOW-CACHE:NO
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:9.999367,
https://cammy-bucket-staging-sydney.s3.amazonaws.com/9fc1a264af66e8acb04953bc6634fb6e.ts

如果你返回上面的内容,safari 会在 11/2 秒左右请求下一个文件,此时不会开始播放。

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-PLAYLIST-TYPE:EVENT
#EXT-X-TARGETDURATION:11
#EXT-X-ALLOW-CACHE:NO
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:9.999367,
https://cammy-bucket-staging-sydney.s3.amazonaws.com/9fc1a264af66e8acb04953bc6634fb6e.ts
#EXTINF:9.968911,
https://cammy-bucket-staging-sydney.s3.amazonaws.com/3e52720b320379de8afc940c3d1b7d34.ts

如果您返回以上内容,safari 将开始播放,因为可用媒体 9.999367+9.968911 比 EXT-X-TARGETDURATION 大,您将在 9.999367+9.968911+11/2 附近看到另一个请求,这完全取决于时间!

关于ios - HLS 'EVENT' 播放列表无法在播放器中启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36169103/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com