как видеоплеер вычисляет продолжительность одного кадра?

Я работаю над проектом, в котором я мультиплексирую необработанный поток h264 в fmp4, чтобы я мог воспроизводить его через MSE (расширение источника мультимедиа)

Меня немного смущает продолжительность кадра. Например,

Если я предоставляю 30 кадров, а шкала времени равна 1000, она воспроизводится в течение 1 секунды.

Если я изменю шкалу времени на 800, она будет воспроизводиться в течение 2 секунд для тех же 30 кадров.

Если я изменю шкалу времени на 500, она будет воспроизводиться в течение 3 секунд для тех же 30 кадров.

Мой вопрос, как плеер вычисляет продолжительность одного кадра по шкале времени?


person Samir Das    schedule 30.07.2017    source источник
comment
Что такое шкала времени? Можете ли вы создать stacksnippets, чтобы продемонстрировать проблему?   -  person guest271314    schedule 30.07.2017
comment
@ guest271314, я так понимаю, шкала времени определяет количество единиц времени, которые проходят каждую секунду. например, шкала времени 60 измеряет шестидесятые доли секунды   -  person Samir Das    schedule 30.07.2017
comment
Извините, я получаю данные из прямой трансляции, поэтому добавить какой-либо фрагмент невозможно. Мой вопрос прост, почему проигрыватель воспроизводит одни и те же 30 кадров в течение разной продолжительности при разном значении временной шкалы? Обратите внимание, что это только первые 30 кадров, а мое базовое время декодирования (dts) равно 0, после них я больше не добавляю кадры.   -  person Samir Das    schedule 30.07.2017
comment
Да, вы можете создать прямую трансляцию на stacksnippets. Можете ли вы дать ссылку на документацию или спецификацию, определяющую временные рамки?   -  person guest271314    schedule 30.07.2017
comment
Каждый кадр имеет продолжительность, закодированную в MP4. Изменение шкалы времени не меняет длительность кадров. Таким образом, если каждый кадр имеет продолжительность 1 и шкалу времени 60, он будет воспроизводиться со скоростью 60 кадров в секунду. Если вы измените шкалу времени на 30, продолжительность кадра по-прежнему равна 1, вы сократите скорость воспроизведения вдвое.   -  person szatmary    schedule 30.07.2017
comment
@szatmary, но это меняется. Я получаю данные из потокового вещания, и FPS не является статичным. Кроме того, у моего SPS-сигнала time_info_present_flag равен 0, что означает отсутствие шкалы времени и другой информации о времени. Поэтому я рассматриваю шкалу времени 1000 при мультиплексировании h264 в fmp4. Теперь я получаю эту проблему. Он меняет продолжительность видео всякий раз, когда я меняю шкалу времени, хотя количество кадров одинаково   -  person Samir Das    schedule 31.07.2017
comment
Вы меняете только знаменатель (временную шкалу). Не числитель (sample_duration в поле trun). Если вы измените знаменатель и не измените числитель, вы измените масштаб.   -  person szatmary    schedule 31.07.2017
comment
@szatmary ты абсолютно прав. Большое спасибо. Пожалуйста, напишите как ответ, это должно быть принято решение   -  person Samir Das    schedule 08.08.2017