У меня есть папка с различными видео, которые я хочу сжать, чтобы поделиться ими с тем, у кого нестабильное интернет-соединение. Я пробовал7z, gzip, tar, lzma, xz, и многие другие для сжатия, но они обеспечивают только 20-30 МБ уменьшения размера. Я пробовал использовать ffmpeg
для сжатия и перекодирования видео, но это действительно медленно.
Я также пытался сжать.isoфайл, но результаты были такими же.
Я понимаю, что сжатие требует многого, но какой должен быть простой подход к минимизации размера файла? Предпочтительны инструменты командной строки Linux.
решение1
Это зависит от того, что именно вы хотите сжать.
Если видеофайл, о котором идет речь, уже находится в сжатом формате, то, вероятно, вы не сможете сделать ничего, кроме как перекодировать его с более низкой скоростью передачи данных (уменьшив разрешение видео или уменьшив скорость аудио в кбит/с). Опять же, вы упомянули, что перекодирование слишком медленное, поэтому, вероятно, это не вариант.
Алгоритмы сжатия в значительной степени опираются на повторяющиеся последовательности в данных. Распространенная схема включает в себя построение словаря для сокращения повторяющихся последовательностей.
Например, рассмотрим строку «eabcdabcdabcd».
Это можно сжать, установив правило словаря «f = abcd», а затем представив строку как «efff».
Теперь рассмотрим строку «abcdefghijkl».
Повторяющихся последовательностей нет, поэтому сжатие с использованием словаря невозможно.
Сжатые форматы файлов уже имеют много удаленных повторений; поэтому их дальнейшее сжатие, вероятно, не даст дополнительных преимуществ. В некоторых случаях сжатие сжатого файла может увеличить его размер (хорошо известное явление с форматом ZIP).
решение2
Сжатие изображений и видео «более сложно», чем сжатие, например, текстовых файлов, поскольку обычные методы сжатия, такие как zip и т. д., не дадут вам очень хорошего результата, как вы сами заметили (комментарий пользователя user1258361 дает вам некоторое представление об этом).
Я бы посоветовал уменьшить разрешение, это просто и даст вам значительное уменьшение размера, но с другой стороны это снизит качество фотографий и видео. Существуют различные инструменты для уменьшения разрешения через CLI (интерфейс командной строки), и этот вопрос задавался много раз, напримерэтот для изображений. Просто запустите поиск и попробуйте, если у вас возникнут особые проблемы, вы можете задать (другой) вопрос. Примечание: в зависимости от вашего оборудования это может быть не очень быстро (но и "хорошие" алгоритмы сжатия тоже не являются таковыми, чем больше сжатие, тем больше вычислений должно быть выполнено - говоря простым языком).
Сжатие без (значительной) потери качества сложнее, поскольку выбор метода сжатия зависит от содержания изображения/видео в отношении ваших требований к качеству. Вам нужно будет перекодировать ваши файлы с другим форматом сжатия. Есть несколькосжатие без потерьно они, вероятно, не дадут вам достаточных результатов. Насколько мне известно, здесь нет общего ответа.
P.S. Предложения по программному обеспечению здесь не рассматриваются в качестве суперпользователя.