【发布时间】:2014-08-20 16:35:01
【问题描述】:
我正在尝试播放一个非常简单的现场播放列表(没有变体,只有两个片段)并且无法从 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缺失时,不会显示持续时间,视频将在最后一帧冻结(加载状态“staled”,播放状态“playing”)。当存在
#EXT-X-ENDLIST时,会(预期)显示持续时间,并且视频将在默认背景下停止并带有 QuickTime 徽标(加载状态“停止”,播放状态“暂停”)。但是,当播放列表在播放期间实时更新以包含
#EXT-X-ENDLIST时,我可以在网络服务器日志中看到它重新加载,但播放器没有意识到视频已经完成,所以它的行为类似于 #1。这是一个问题,因为我无法在 UI 中指示流已完成。问题仅在于结束标记,重新加载时可以正确检测到其他段。
玩家决定缓冲完成的时间不一致。当我只有一个片段可用时,播放不会立即开始,但是当我有 2 个或更多片段时,它将连续播放所有片段并停止。我怎样才能让它只用 1 段开始播放?这是一个问题,因为它会产生额外的播放开始延迟。
当没有片段时,它会在“播放”状态下永久卡住黑屏。它不会结束播放,不会改变状态,也不会重新加载播放列表。
对于未完成的流,有时玩家 HUD 会显示空白时间
--:-- o----- --:--,有时会显示--:-- o----- Live,似乎随时都可以。
我想知道它接受的播放列表是否有一些怪癖,或者MPMoviePlayerController 是否首先是一个正确的工具。我可以让它表现出来吗?我应该直接跳转到AVPlayer 以获得一致的播放体验吗?
【问题讨论】:
-
AVPlayer 实际上由 MPMoviePlayerController 使用,对用户完全透明。如果直接使用 AVPlayer 解析流时发生的问题(如您所描述的)会改变,我会感到惊讶。你试过Apple's validation tool吗?
标签: ios video mpmovieplayercontroller http-live-streaming