Как вывести и наложить переменную частоту кадров видео на повторяющиеся кадры с помощью ffmpeg?

Как вывести и наложить переменную частоту кадров видео на повторяющиеся кадры с помощью ffmpeg?

У меня есть видеозапись игры без потерь качества без разрывов экрана. Само видео имеет постоянную частоту 60 кадров в секунду, но частота кадров игры колеблется между 20-30 кадрами в секунду из-за проблем с производительностью, которые мы отлаживаем. Мы можем наложить счетчик FPS в игре, но это повлияет на производительность и даст неточную картину того, какова истинная достижимая частота кадров. Есть ли способ вместо этого использовать ffmpeg для выведения частоты кадров из дубликатов кадров в видеофайле и создать новый видеофайл с выведенной частотой кадров или временем кадров, наложенными друг на друга?

Из некоторых исследований я обнаружил, что это ffmpeg -i lossless.mkv -vf "mpdecimate=hi=0:lo=0:frac=0" -loglevel debug -f null -правильно распечатает список всех дублированных кадров, но это не очень полезно и может потребовать сложных скриптов для преобразования в желаемый результат. Если есть способ сначала преобразовать видео в переменную частоту кадров, объединив дублированные кадры, а затем наложить эту частоту кадров на видео, это было бы более идеально.

В своем тестировании я попробовал следующую комбинацию команд:

  • ffmpeg -i lossless.mkv -vf "mpdecimate=hi=0:lo=0:frac=0" -vsync vfr -r 60 -c:v libx264 -preset medium -crf 0 -c:a copy lossless-vfr.mkv
  • ffmpeg -i lossless-vfr.mkv -vsync vfr -r 60 -vf "drawtext=fontfile='C\:\\Windows\\Fonts\\arial.ttf':x=10:y=10:fontsize=20:fontcolor=white:text='frametime\=%{expr\:pkt_duration}'" -c:v libx264 -preset medium -crf 0 -c:a copy lossless-fps.mkv

Однако отображаемое время кадра всегда показывает одно и то же значение в наложении 0,016000, несмотря на переменную частоту кадров. Если я запускаю, ffprobe -show_frames lossless-vfr.mkvто вижу, что pkt_duration_timeзначение меняется от кадра к кадру, поэтому странно, что оно получает постоянное значение при отрисовке текстового наложения. Как мне получить точное наложение переменной частоты кадров?

Связанный контент