Конвертировать NSDate из AVDateRangeMetadataGroup в CMTime - PullRequest
0 голосов
/ 31 августа 2018

AVPlayer в основном измеряет время с CMTime. Однако при использовании AVPlayerItemMetadataCollector для сбора метаданных диапазона дат из потока HLS результирующие AVDateRangeMetadataGroup s удерживают NSDate s вместо CMTime s.

Моя проблема в том, что я хочу добавить наблюдатель граничного времени в проигрыватель, чтобы я знал, когда воспроизводящая головка фактически входит в диапазон дат, но добавить наблюдателя граничного времени можно только с помощью CMTime. AVPlayer и AVPlayerItem могут искать Date и могут выдавать мне текущую головку воспроизведения как Date, но я не вижу способа преобразовать данный Date в CMTime, который я можно использовать для установки граничного наблюдателя времени.

Теоретически, если бы я знал, что говорит тег EXT-X-PROGRAM-DATE-TIME, я мог бы рассчитать смещение CMTime самостоятельно, но я не вижу способа получить это.

Единственная другая мысль, которую я имел, состояла в том, чтобы извлечь и currentTime и currentDate из AVPlayerItem, затем вычислить относительное смещение между currentDate и моей целевой датой и применить это к CMTime. Но проблема с этим решением заключается в том, что currentDate и currentTime не будут отображаться в одно и то же время. Дельта, вероятно, будет очень маленькой, но она не будет нулевой (если только rate не равен нулю).

...