Рассчитать время события сращивания из pts time в сообщении SCTE 35
Как я видел в документе, pts_time
поле часто несет относительную PTS от запуска программы сети. Но я не знаю, как рассчитать время соединения в обычное время (dd/mm/yyyy hh:mm:ss.ms)
основываясь на этом pts_time
значение.
Например: сообщение SCTE 35 cue out с pts_time
значение составляет 58855 МГц. Как я могу рассчитать фактическое время, когда происходит событие соединения?
3 ответа
Из спецификации SCTE-35: ( http://www.scte.org/documents/pdf/standards/Top%20Ten/ANSI_SCTE%2035%202013.pdf):
pts_time - 33-битное поле, которое указывает время в виде тактов тактовой частоты программы 90 кГц. Это поле, когда оно изменено параметром pts_adjustment, представляет время предполагаемой точки соединения
Поэтому это: 58855 / 90000 = 0,6539444444444444 секунд
Вам нужно применить pts_adjustment, и это относительно PTS
Как вы получаете входящее сообщение? Обычно SCTE35
Раздел информации о сращивании содержится внутри чего-то вроде SCTE30
Cue Request
сообщение.
Если вы изучите раздел 7.4.1 стандарта SCTE30, вы найдете:
time () - - Это время выводится из splice_time() в splice_info_section() SCue 35 Cueing Message посредством Splicer. Если режим соединения компонентов используется в SCTE 35 splice_info_section, time () будет ссылаться на время соединения по умолчанию, подробно описанное в Разделе 7.5.2.1 SCTE 35.
По сути, время UTC, содержащееся в запросе Cue, - это время, которое вы ищете (по крайней мере, так мы его реализовали).
Я написал threefive, это самый высокий в мире парсер SCTE-35.threefive не только с точностью до кадра, но и с точностью до одной миллионной секунды.
Я обсуждал это как минимум 100 раз.
SCTE-35 называет это PTS, но на самом деле это временные метки PCR из видеопотока pcr_pid
33-битное базовое значение PCR (не 40-битное расширенное значение PCR).
1 секунда (33-битное базовое значение PCR / 90k) = 1 секунда времени настенных часов.
Threefive сделает все за вас.