将NSDate从AVDateRangeMetadataGroup转换为CMTime

Lil*_*ard 15 avfoundation http-live-streaming avplayer

AVPlayer主要测量时间CMTime.但是,当使用AVPlayerItemMetadataCollector从HLS流收集日期范围元数据时,结果AVDateRangeMetadataGroups保持NSDates而不是CMTimes.

我的问题是我想向播放器添加一个边界时间观察器,所以我知道当播放头实际进入日期范围时,你只能添加一个边界时间观察者CMTime.AVPlayer并且AVPlayerItem可以寻找一个Date并且可以给我当前的回放头作为Date,但我没有看到任何方式将给定Date转换为CMTime我可以用来设置边界时间观察者.

从理论上讲,如果我知道EXT-X-PROGRAM-DATE-TIME标签说什么我可以CMTime自己计算偏移量,但我没有找到一种方法来检索它.

唯一的其他想法我是同时检索currentTimecurrentDateAVPlayerItem,然后计算相对之间的偏移currentDate和我的目标日期并应用到CMTime.但是这个解决方案的一个问题是currentDate,currentTime并不代表完全相同的时间.三角洲可能会非常小,但它不会为零(除非它rate本身为零).