Ios M3U8 URL的MPMoviePlayerController行为异常
我正在尝试播放一个非常简单的实时播放列表(没有变体,只有两个片段),无法从Ios M3U8 URL的MPMoviePlayerController行为异常,ios,video,mpmovieplayercontroller,http-live-streaming,Ios,Video,Mpmovieplayercontroller,Http Live Streaming,我正在尝试播放一个非常简单的实时播放列表(没有变体,只有两个片段),无法从MPMoviePlayerController中获得理智的行为 #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:10 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:10.0, 1.ts #EXTINF:10.0, 2.ts #EXT-X-ENDLIST 当#EXT-X-ENDLIST缺失时,将不显示持续时间,视频将在最后一帧冻结(加载状态为“过时”,播放状态
MPMoviePlayerController
中获得理智的行为
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10.0,
1.ts
#EXTINF:10.0,
2.ts
#EXT-X-ENDLIST
#EXT-X-ENDLIST
缺失时,将不显示持续时间,视频将在最后一帧冻结(加载状态为“过时”,播放状态为“播放”)
当出现#EXT-X-ENDLIST
时,将(预期)显示持续时间,视频将在默认背景下停止,并带有QuickTime徽标(加载状态为“暂停”,播放状态为“暂停”)
但是,当播放列表在播放过程中实时更新为包含#EXT-X-ENDLIST
时,我可以在web服务器日志中看到它被重新加载,但播放机没有意识到视频已经完成,因此它的行为类似于#1。这是一个问题,因为我无法在UI中指示流已完成
问题只存在于结束标记,重新加载时会正确检测到其他段:--o-------:--
,有时会显示:--o---Live
,似乎在任何时候都可以我想知道它在接受哪些播放列表方面是否有一些怪癖,或者
MPMoviePlayerController
首先是否是一个正确的工具。我能让它规矩点吗?我是否应该直接跳到AVPlayer以获得一致的播放体验?事实证明,最糟糕的不良行为(#1,部分#2)是由于.ts
段没有正确设置时间戳。每个段都需要将其开始时间戳设置为所有先前段的持续时间之和,例如:
start duration
00:00 00:03
00:03 00:03
00:06 00:03
而错误的顺序看起来像:
start duration
00:00 00:03
00:00 00:03
00:00 00:03
事实上,AVPlayer由MPMoviePlayerController使用,只是对用户完全透明。如果在直接使用AVPlayer时,解析流时出现的问题(如您所述)会发生变化,我会感到惊讶。你试过了吗?