我有一个 iOS 应用程序可以播放来自 HTTP Live 流“playlist.m3u8”的视频,并且我有一个使用 AVPlayer 创建的自定义播放器。为了处理正常的用户交互,例如擦洗,我需要获取视频的持续时间,但由于某种原因,在 iOS 4.3 上使用 xcode 4.0 调用以下代码时,我得到一个 CMTime,当转换为秒时会给出一个 NaN - 我知道它在做什么,因为 CMTimeValue = 0 和 CMTimeScale = 0 这给出了 NaN 和 CMTimeFlags = 17,这更奇怪。
这是我使用的代码,它一点也不复杂:
AVPlayerItem *pItem = mPlayer.currentItem;
AVAsset* asset = pItem.asset;
CMTime d = asset.duration;
double duration = CMTimeGetSeconds(asset.duration);
我还应该提一下,我确实会监控加载播放列表的状态,以确保在我开始播放/擦洗之前它已准备就绪:
[mPlayer addObserver:self forKeyPath:@"currentItem.status" options:0 context:VideoPlaybackViewDelegateStatusContext];
感谢您在此问题上提供的任何帮助。