Уменьшить размер, отбросив кадры без перекодирования

Уменьшить размер, отбросив кадры без перекодирования

Я хочу значительно уменьшить размер файла, удалив кадры и ускорив его.

Следующие действия работают, но только при перекодировании:

  • ffmpeg -r 1000 -i input.mp4 -r 30 -y output.mp4

  • ffmpeg -itsscale .01 -i input.mp4 -r 30 -y output.mp4

Добавление -c copyих ломает.

  • -r 1000метод не делает абсолютно ничего.

  • -itsscaleсоздает ускоренное видео, но не уменьшает размер файла... Все ли кадры по-прежнему скрыты в файле?

Есть ли способ удалить кадры и уменьшить размер файла без перекодирования?

решение1

Вы не можете просто отбросить кадры и получить работающее видео, потому что некоторые кадры зависят от кадров, которые им предшествовали. Это оптимизация, используемая во многих кодеках/форматах для уменьшения размера файла.

Поэтому вам обязательно придется перекодировать видео, если вы хотите уменьшить его размер.

Для лучших решений см. пост Как уменьшить размер видео с помощью ffmpeg?

В ответах на этот популярный пост перечислены различные решения:

  • Используйте видеоформат H.265, который намного лучше, поскольку обеспечивает большую степень сжатия при том же качестве.
  • Использовать -crf 28(связь
  • Уменьшите размер видео для меньшего разрешения.
  • Если видео не содержит сцен с быстрыми действиями, уменьшите частоту кадров.
  • Увеличьте степень сжатия.
  • Уменьшите глубину цвета.

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