Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Обычно берут единицу времени, используемую для меток времени кодируемого кадра. Если этого не сделать, то видеокодеры обычно выдают ошибку, аудиокодеры устанавливают значение по умолчанию — обратное к частоте дискретизации.Дело в том, что некоторые видеокодеры используют поле time_base как frame rate, некоторые делают «правильно» и берут само поле frame_rate и используют частоту кадров и частоту дискретизации времени независимо. Проблемы будут если вы нарветесь на первый вариант, например MPEG1/2 Encoder.
Может ли кодек изменить заданную единицу времени, не вполне ясно.Вполне может, почему нет.
В процессе кодирования необходимо установить pts и dts пакета.Тут не так все просто, на самом деле. Я считаю что dts это вообще ошибка проектирования и результат инерции мышления. В любом случае мне не известны кодеки которые бы использовали dts. Лично у меня dts сразу сбрасывается и проставляется потом, если необходима запись в контейнер. Такой подход более универсальный и удобный, на мой взгляд. Например, если мы сливаем потоки из нескольких источников в один стрим.
Как добавить кодек в FFmpeg