Я записываю видео с помощью FFmpeg, и мне бы хотелось, чтобы частота кадров, с которой оно записано, была хотя бы на правильном уровне. Прямо сейчас я беру частоту кадров, на которую претендует мой ввод, и использую ее для установки частоты кадров (time_base) для моего выходного видеопотока. Однако иногда это сильно отличается от фактической частоты кадров, которую я получаю (я видел поток, заявляющий 50 кадров в секунду, но публикующий 9 кадров в секунду).
Что я хотел бы сделать, так это использовать истекший таймер и подсчитать кадры, которые я записываю, чтобы рассчитать фактическую частоту кадров, с которой я записал, когда я закончил запись. Хотя мне кажется, что частота кадров, установленная в моем AVStream, используется в avcodec_open2 до того, как я запишу какие-либо кадры. Если я установлю его позже (например, во время записи кадров), пока ffplay может его воспроизвести (жалуясь, что биты приращения времени равны 6, а не 4), другие видеоплееры не могут. Есть ли способ установить частоту кадров для всего файла после записи кадров? Если нет, есть ли способ указать самим кадрам какую-то временную метку или частоту кадров во время записи, что приведет к правильному записанному файлу?