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

17

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

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

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

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

    
задан Lee 26.04.2014 в 12:29
источник

5 ответов

25

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

В другой заметке, если вы хотите уменьшить размер этих видео, посмотрите вместо этого на повторное кодирование видео с помощью чего-то вроде Handbrake.

    
ответ дан saiarcot895 26.04.2014 в 12:59
источник
13

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

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

    
ответ дан leftaroundabout 26.04.2014 в 21:05
12

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

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

ответ дан terdon 26.04.2014 в 13:03
5

Это хороший пример принципа пигментной дыры .

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

ответ дан Livius 26.04.2014 в 17:01
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 (если вы очень терпеливы!).

  • Дополнительные настройки можно найти здесь: Ссылка

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

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

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

ответ дан Daniel Hill 28.04.2014 в 05:37