Во-первых, незначительное отступление от терминологии: ZIP - единственный используемый вами формат архива . Gzip и Bzip2 являются форматами сжатия, а не форматами архива. Чтобы быть более конкретным:
Формат архива объединяет несколько файлов и / или каталогов, обычно включая метаданные, такие как владение, метки времени и, возможно, другие данные, в один файл. Tar является примером формата чистого архива, он не имеет встроенного сжатия,
Формат сжатия просто сжимает данные, но не объединяет несколько файлов в один. Gzip, Bzip2, Brotli, LZ4, LZOP, XZ, PAQ и Zstandard - все форматы сжатия. Некоторые из них (например, Gzip и LZ4) могут поддерживать сжатие нескольких файлов и объединение их в один файл, который затем может быть распакован в несколько исходных файлов (что и происходит, когда вы архивируете каталог), но они не сохраняются пути или другие метаданные, поэтому они не являются архивными форматами.
Некоторые форматы, такие как ZIP, 7z или RAR, сочетают архивирование и сжатие (хотя ZIP также может хранить файлы без сжатия).
Теперь, со всем этим, давайте перейдем к вашему основному вопросу:
Комментарий music2myear правильный. Ваши результаты будут сильно различаться в зависимости от конкретной специфики используемой кодировки MP4. Это связано с тем, что сам MP4 включает сжатие данных, в этом случае оптимизированное для сжатия аудио- и видеоданных без существенного снижения воспринимаемого качества. Процессы, которые он использует для этого, на самом деле несколько сложны (слишком сложны для объяснения здесь), но из-за ограничения, которое не снижает воспринимаемое качество, в сочетании с тем, что он сжимает кадр за кадром, а не как один длинный стрим, иногда есть значительные возможности для улучшения (как вы можете видеть из своего теста).
Теперь, хотя я не могу дать окончательный ответ без большого количества дополнительной информации, тем не менее, я могу дать вам несколько общих советов по сжатию файлов:
ZIP и Gzip показывают очень похожие результаты в этом случае, потому что они используют варианты одного и того же алгоритма сжатия, более конкретно производную от алгоритма LZW, известного как DEFLATE. DEFLATE - не очень хороший алгоритм сжатия, но он повсеместен (есть даже аппаратные реализации), поэтому его часто используют в качестве стандарта сравнения. Помимо использования в качестве компонента других форматов файлов (таких как ZIP), он не очень широко используется для хранения. Практически все, что основано на DEFLATE (или LZW в целом), не выиграет ни в каком отношении при сравнении алгоритмов сжатия.
Bzip2, напротив, выполняет некоторые сложные преобразования данных, чтобы повысить эффективность их сжатия, а затем использует кодирование Хаффмана для фактического сжатия. В большинстве случаев он сжимает лучше, чем компрессоры на основе DEFLATE, но он также медленнее, чем DEFLATE. Из-за некоторых предположений о том, как он преобразует входные данные до кодирования Хаффмана, он также несколько более чувствителен, чем многие другие варианты, к тому, как структурируются входные данные.
XZ использует другой алгоритм, называемый LZMA. Подобно алгоритму LZW, из которого получен DEFLATE, LZMA в конечном счете получен из алгоритма, известного как LZ77, хотя он получает безумно лучшие коэффициенты сжатия, чем опции, основанные на DEFLATE, и значительно лучшие коэффициенты сжатия, чем Bzip2, в большинстве случаев. В дополнение к LZMA, он выполняет некоторые преобразования, которые делают его немного лучше при сжатии исполняемых файлов, чем другие опции. Однако цена этого заключается в том, что сжатие данных занимает много времени. 7zip также использует LZMA, но без преобразований данных, поэтому часто это не так хорошо с точки зрения соотношений, как XZ.
LZOP использует алгоритм LZO и обычно сжимает хуже, чем DEFLATE, но работает намного быстрее. Как и Gzip, он больше не используется, так как люди предпочитают альтернативы, которые либо дают лучшую степень сжатия, либо лучшую производительность.
LZ4 - это новый стандарт, разработанный Google, который работает безумно быстро (около скорости пропускной способности памяти для декомпрессии), но имеет еще худшие коэффициенты сжатия, чем LZO. Он медленно вытеснял LZO, так как большинство вещей, которые использовали LZO, использовали его для скорости.
Brotli - еще один новый от Google. Он является частью стандарта HTTP/2 и специально оптимизирован для потоковой передачи, и на самом деле может обеспечить более высокие коэффициенты сжатия и производительность, чем опции, основанные на DEFLATE. Тем не менее, он не поддерживается широко для простого сжатия файлов, поэтому он может быть нереальным вариантом для вашего использования.
PAQ для тех, кто действительно безумно беспокоится о максимизации коэффициента сжатия. Он использует сложную комбинацию статистических моделей для достижения абсолютных коэффициентов сжатия (в зависимости от исходных данных, файл, сжатый с помощью PAQ, нередко составляет менее 1/10 от исходного размера, тогда как DEFLATE в среднем приближается к 1/2) , Цена этого, конечно, заключается в том, что для сжатия чего-либо с помощью PAQ требуется безумно много времени. При высоких настройках сжатия, вероятно, потребуется не менее получаса, чтобы сжимать этот пример видео с помощью PAQ. Из-за количества времени, которое требуется, почти никто не использует PAQ, и те немногие, кто редко использует его для каких-либо целей, кроме как для архивных целей (то есть, они используют его только для файлов, которые вряд ли когда-либо изменятся).
Zstandard является самым новым из всех, и был разработан Facebook. Он использует сочетание старых и новых методов (включая некоторые методы машинного обучения) для достижения коэффициентов сжатия, сравнимых или превосходящих bzip2 (а иногда даже лучше, чем XZ), при этом работает значительно быстрее, чем большинство других перечисленных мною перечисленных. кроме LZ4. Вероятно, он не будет побеждать XZ для вашего использования (и определенно не побьет PAQ), но он может получить достаточно хорошие соотношения, чтобы стоило значительно лучшей производительности.