Воспроизведение видео 60 кадров в секунду на скорости 30 кадров в секунду

У меня есть видео 60pps 1080p от GoPro, которое действительно воспроизводится в mpv (и других медиаплеерах). Как сделать так, чтобы mpv сбрасывал каждый второй кадр, чтобы получить более плавное видео?

В качестве альтернативы, есть ли быстрый способ конвертировать видео в 30 кадров в секунду?

2 ответа

Отвечая на эту часть вопроса: "Альтернативно, есть ли какой-нибудь быстрый способ конвертировать видео в 30 кадров в секунду".

Благодаря этому ответу при обработке видео должна быть возможность «без потерь» выбросить некоторые кадры B и P без медленного перекодирования. Первоначально это было предложено здесь и будет выполняться следующим образом:

      ffmpeg -discard noref -i input.mp4 -c copy -vsync 0 reduced.mp4

Вторая ссылка утверждает, что это поддерживается для h264. Поскольку поддержка h265 интегрируется в ffmpeg по отдельности, ffmpeg 4.2.4, который у меня был под рукой, не может сделать это для h265 (пока).


ОБНОВЛЕНИЕ: На самом деле, mpv может напрямую передать эту опцию lavc. И это работает даже для файлов h265:

      mpv --vd-lavc-skipframe=[nonref|bidir|nonkey]
  • «--vd-lavc-skipframe=nonref», похоже, не пропускает значительное количество кадров.
  • «--vd-lavc-skipframe=bidir» пропускает все B-кадры, в результате чего остается только несколько кадров в секунду.
  • «--vd-lavc-skipframe=nonref» оставляет только I-кадры, что превращает видео в слайд-шоу.

Резюме: он не может работать со скоростью 30 кадров в секунду, но позволяет просматривать видео h265@60 с низким уровнем активности на старом оборудовании.

Пытаться mpv --framedrop=vo <video>, Надеюсь, это должно делать то, что вы хотите. Если вы посмотрите руководство по mpv и ищите framedropВы также увидите, что есть и другие варианты (которые "не рекомендуются"). Я мог представить, что --framedrop=decoder может помочь, например, если ваш компьютер слишком медленный для декодирования видео.

Другие вопросы по тегам