Я хочу значительно уменьшить размер файла, удалив кадры и ускорив его.
Следующие действия работают, но только при перекодировании:
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
(связь - Уменьшите размер видео для меньшего разрешения.
- Если видео не содержит сцен с быстрыми действиями, уменьшите частоту кадров.
- Увеличьте степень сжатия.
- Уменьшите глубину цвета.