Сжатие видео создает еще больший файл

17

Я использовал графический интерфейс (щелкните правой кнопкой мыши => сжимать), чтобы попробовать сжать .tar, содержащий 3 видео общим объемом 1,7 ГБ (.H264 MP4s). gzip, lrzip, 7z и т. д. все не влияют на размер файла, а сжатая папка также составляет 1,7 ГБ.

Затем я попытался запустить lrzip из командной строки (на случай, если это была проблема с графическим интерфейсом) и использовал флаг -z (экстремальное сжатие), и это был мой вывод.

введите описание изображения здесь

Как показывает степень сжатия, фактический размер сжатой папки больше исходного! Я не знаю, почему мне не повезло, в частности, lrzip должен быть эффективен в соответствии с прочитанными мною случайными отзывами и официальными документами (файлы размером более 100 МБ, чем больше, тем лучше) - см . Https: //wiki.archlinux. орг / index.php / Lrzip

Почему я не могу сжать мои файлы?

подветренный
источник
2
Лично я не буду беспокоиться об архивации MP4-видео, так как эти видео уже сжаты кодеком.
коляска
И вы можете достичь меньшего размера, используя инструменты для конвертирования видео / сжатия, такие как FFMpeg .
Jet
Коляска и Джет верны. Это ожидаемое поведение. Бесполезно пытаться сжать то, что уже хорошо сжато. Если вы используете инструменты конвертирования видео, вы можете сэкономить место за счет качества видео (очевидного или нет). Начните с самой качественной наименее сжатой копии, которая у вас есть.
Джон Грубер

Ответы:

25

Как сказано выше в комментарии @pram, видео mp4 уже сжаты, и другие форматы видео, вероятно, также в какой-то степени используют сжатие. Следовательно, попытка сжать их не приведет к незначительному (если вообще будет) уменьшению размера (это также относится, по крайней мере частично, к изображениям и музыке). В этом случае, похоже, что метаданные (для самого сжатого файла) могут быть причиной увеличения. Единственный формат сжатия, который может (и это сильно) может привести к некоторому сокращению, - это xz.

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

saiarcot895
источник
3
Я считаю, что WebM имеет хорошие показатели сжатия в целом. Гораздо меньше, чем mp4.
Сет,
@ На самом деле MP4 (который является либо AVC aka h.264, либо более новым и лучшим кодеком h.265 aka HEVC) дает файлы меньшего размера с тем же качеством (или лучшим качеством при том же размере файла).
Давид Балажич
@ DavidBalažic Мы сравниваем яблоки и яблоки здесь, когда мы пытаемся поговорить об апельсинах. mp4 и webm оба являются контейнерами, они не имеют ничего общего со сжатием. Вы правы, что h.264 и h.265 оба часто используются кодеками в контейнерах mp4, но вы не можете сравнить h.265 с webm . h.264 сопоставим с кодеком vp8, обычно используемым в контейнерах webm, точно так же, как h.265 сопоставим с кодеком vp9, также обычно содержащимся в webm. tl; dr: используйте h.265 в mp4 и vp9 в webm, и вы получите примерно одинаковое качество / эффективность.
Форрестхопкинса
13

Действительно, тот факт, что файлы уже сжаты, не является критической проблемой. Дело в том, что сжатие вообще может работать, только если в данных есть какая-то избыточность . Это практически всегда относится к несжатым файлам, однако не всегда очевидно, что такое избыточность. Алгоритмы сжатия общего назначения в основном нацелены на такие вещи, которые очевидны в текстовых файлах: многие слова встречаются не один раз, а множество раз в одинаковой форме, возможно, можно объединять фразы и т. Д. И т. Д. Алгоритмы довольно хороши обобщая это на что-нибудь от списков телефонных номеров в китайском стихе в кодировке ASCII до двоичного машинного кода, но они не могут работать с любыми данными. В частности, медиа-файлы концептуальноаналоговые данные , в шумном цифровом представлении. Это означает, что на самом деле не существует какого-либо вида избыточности текстового файла: некоторые мотивы могут повторяться, но всегда с немного отличающейся конфигурацией шума датчика. Вот почему во всех форматах сжатых изображений / AV в качестве первого шага кодирования используется какое-то хитро выбранное преобразование, обычно основанное на DCT или вейвлетах . Грубо говоря, эти преобразования перемещают части изображения и части шума в разные места, поэтому они могут быть разделены, и при сжатии с потерями вы сохраняете только ту информацию, которая, по вашему мнению, является наиболее «важной», которая не включает шум, в то время как « хорошая информация "имеет много избыточности. (Это не совсем так, но вроде как.)

Если бы компрессоры общего назначения использовали эти преобразования, эффект был бы противоположным: большая часть цифровой информации фактически была бы ошибочно классифицирована как некоторый шум, потому что ей не хватает «гладкой» структуры, которую вы можете найти в аналоговых сигналах. И после сжатия видео с потерями, очевидно, больше не будет найдено ни аналоговой гладкости, ни цифрового повторения (если бы это было, кодеки использовали бы другой этап bzip или что-то другое!)

leftaroundabout
источник
12

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

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

terdon
источник
5

Это хороший пример принципа голубя .

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

Ливия
источник
4
Извините, но это неправильное применение указанного принципа. Вы можете применить ту же логику к 1,7-гигабайтному файлу, заполненному нулями, и получить неправильный ответ. Принцип «голубиных отверстий» обычно используется для доказательства существования несжимаемых файлов, а не для доказательства того, что какой-либо конкретный файл на самом деле является несжимаемым. (Последнее не вычислимо, так как функция сложности Колмогорова не является вычислимой).
nneonneo
1
@nneonneo Тогда не стесняйтесь исправлять связанную статью из Википедии. Непосредственно из этого следует существование несжимаемых файлов, а затем вы добавляете метаданные сжатия, и неожиданно у вас появляется файл, превышающий исходный. Это именно то, что я сказал. Доказательством того, что файл не подлежит дальнейшему сжатию при заданной реализации данного алгоритма, является то, что выходные данные не меньше. Конечно, также возможно, что метаданные просто больше выигрыша от сжатия, но я не уверен, что описал бы их как сжатые в пользовательском смысле.
Ливиус
@Livius Статья в Википедии верна: в ней используется принцип «квадратного отверстия», чтобы доказать существование несжимаемых файлов для любого алгоритма сжатия без потерь. Но вы не можете получить несжимаемость какого-либо конкретного файла только из принципа голубя.
Дэвид Ричерби
@DavidRicherby Да, но тот факт, что файл не сжимается заданной реализацией данного алгоритма, является доказательством того, что он не сжимается. Если нет других причин существования несжимаемых файлов, то из этого следует, что сбой сжатия происходит из-за PP. Единственная возможная причина может заключаться в том, что данный алгоритм не видит способа уменьшить его размер, что опять-таки выглядит как «при предположениях алгоритма, нет файла меньшего размера с той же информацией; такие случаи обязательно существуют из-за ПП ".
Ливиус
Точнее, PP заставляет алгоритм иметь входные данные, изображение которых не лежит в пространстве небольших файлов. Таким образом, каждое решение, которое приводит к тому, что образ данного файла не помещается в это пространство, находится на каком-то уровне, управляемом ПП, и компрометирует его силами (при условии разумного определения алгоритма сжатия). Тогда любой файл, изображение которого не меньше, принадлежит набору, который ПП исключил из сжимаемого. Доказательством того, что данный файл не сжимаем, является его неспособность сжимать; в широком смысле несжимаемость всегда является результатом ПП и его компромиссов.
Ливиус
4

Если вы хотите сжать эти файлы, вам придется снизить качество.

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

BluRays с видео 1080p имеет тенденцию превышать 25 ГБ, так что не исключено, что у вас уже есть оптимальное соотношение качества и размера для H.264.

Вы можете попробовать использовать ffmpegили avconvконвертировать файлы.

Вы могли бы начать с ffmpeg -i input_file.mp4 -preset slower -crf 20 -c:a copy output_file.mp4

Команда anconvбудет работать аналогично.

  • Увеличьте -crfзначение, чтобы уменьшить размер и качество файла, я не рекомендую больше 25.

  • Вы можете изменить предустановку на slowили mediumувеличить скорость, но размер вашего файла будет страдать по сравнению с slowerили даже veryslow(если вы очень терпеливы!).

  • Дополнительные настройки можно найти здесь: http://mewiki.project357.com/wiki/X264_Settings

  • Я рекомендую держаться подальше от большинства, так как предустановки обеспечивают нормальные значения по умолчанию, -tuneза исключением.

  • Попробуйте denoiser, если ваш контент - film ( -vf hqdn3d), вы можете улучшить визуальное качество по сравнению с использованием высокого -crfзначения.

  • Уменьшите свой контент -vf scale=-1:720до 720p и -vf scale=-1:480480p, чтобы повысить скорость кодирования и сохранить качество.

Дэниэл Хилл
источник