Hls.js конвертирует видео PTS из единиц в секунды - PullRequest
0 голосов
/ 28 сентября 2019

Short

Я хотел бы добавить сдвиг времени в проигрывателе потокового видео с использованием PTS, но не знаю, как правильно выполнить преобразование из единиц в секунды.

Long

Я пытаюсь создать простой проигрыватель потокового видео, используя hls.js , и я хотел бы показать в браузере разницу между реальным временем начала потокового воспроизведения и временем, когда пользователь подключается к потоку.Например, потоковое видео длится 2 минуты 15 секунд, если теперь пользователь открывает мой проигрыватель, он должен показывать не «0 - 36» (36 - время для нескольких уже загруженных фрагментов), а «2:15 - 2:51».Проще говоря, я хотел бы добавить сдвиг времени в видеоплеере.Поскольку это MPEG-TS, он содержит PTS в заголовке PES, который подключен к таймеру 90 кГц.В hls.js уже проделали работу с получением PTS из пакетов.Таким образом, должно быть легко установить новую переменную равной PTS после проверок и побитовых операций и преобразовать новую переменную из единиц в секунды.И есть моя проблема - я не знаю, как правильно сделать конвертацию.Я попытался разделить полученный PTS на 90000, но полученное значение больше, чем время видео на 1,46 секунды, и увеличивается с продолжительностью видео (я проверял видео до 2,5 часов, и в конце видео оно было примерно на 6 секунд больше, чем реальное видео)).В этом случае я думаю, что из-за деления я всегда получу значение, которое больше, чем реальное за 1 секунду, - можно установить костыль путем вычитания на 1 в коде.Но это не решает проблему роста времени.

С самого начала это дает мне:

PTS = 132000

Далее я пытаюсь разделить его на 90 кГц:

132000/90000 = 1,466666667 sec

Помогите пожалуйста, что я делаю не так?

1 Ответ

0 голосов
/ 29 сентября 2019

Деление на 90000 является правильным, но файл не начинается с PTS 0. Вам нужно вычесть первый PTS видео из текущего PTS, а затем разделить.

...