Rust движок сжатия
Собственный движок сжатия с интеллектуальным распределением стратегий по типу файла
Обзор движка
Написан на Rust, распределяет по специализированным компрессорам по типу файла
Движок сжатия SmartSlim написан на Rust. Основной подход заключается в распределении входных файлов по соответствующим специализированным компрессорам (изображения, PDF, видео, аудио, документы Office, OFD и т.д.) в зависимости от типа файла, причём каждый компрессор применяет оптимальную стратегию сжатия для данного формата. Движок интеллектуально анализирует характеристики изображений для автоматического выбора схем сжатия, использует нативные привязки библиотек для видео/аудио для достижения наилучшей производительности и применяет стратегию структурированной перепаковки для документов Office.
Интеллектуальное сжатие изображений
Анализирует характеристики изображения и автоматически выбирает оптимальную стратегию кодирования
1. Интеллектуальный анализ изображения
Движок автоматически анализирует характеристики изображения, такие как распределение оттенков серого и сложность деталей, определяя, является ли изображение бинарным, документом, смешанным или фотографическим типом, предоставляя основу для решения о последующей стратегии сжатия.
2. Автоматическая классификация
Изображения классифицируются на 4 категории по нескольким индикаторам: Бинарные (например, сканированные документы), Документ (немного цветов), Смешанные (текст + фото), Фото (богатые цвета). Разные категории используют разные параметры качества.
3. Распределение форматов и оптимизация кодирования
На основе формата ввода и результата классификации движок распределяет по специализированным кодировщикам для целевой оптимизации. Параметры качества регулируются по уровню сжатия (низкий/средний/высокий/ультра) для балансировки степени сжатия и чёткости.
Сжатие PDF
Субдискретизация и контроль DPI для значительного уменьшения размера
-
Субдискретизация встроенных изображений:Субдискретизация встроенных изображений в PDF с регулировкой целевого разрешения по уровню сжатия для значительного уменьшения размера файла при сохранении читаемости.
-
Многоуровневый контроль качества:Предоставляет четыре уровня сжатия: низкий, средний, высокий и ультра. Более высокие уровни обеспечивают большие коэффициенты сжатия. Пользователи могут гибко выбирать в зависимости от случая использования.
Сжатие видео и аудио
Нативные привязки библиотек, без накладных расходов процесса
Сжатие видео
На основе нативных привязок библиотек (не вызов командной строки, без накладных расходов процесса), поддерживает основные форматы видеокодирования. Управляет качеством изображения через постоянный фактор качества, выбирает оптимальные пресеты кодирования по сценарию для балансировки скорости и коэффициента сжатия. Поддерживает специфичные для сценария параметры для веб-публикации, потоковой передачи, социальных сетей, прямого эфира, прокси для монтажа и т.д.
Сжатие аудио
Поддерживает несколько форматов аудиокодирования, балансируя низкий битрейт с высоким качеством звука. Устанавливает целевой битрейт и частоту дискретизации по сценарию (архивирование, музыкальный стриминг, подкаст, голосовое сообщение, рингтон, веб-публикация).
Сжатие документов Office
Структурированная перепаковка + интеллектуальное сжатие встроенных изображений
Word (docx), Excel (xlsx), PPT (pptx) и другие документы Office по сути являются архивными форматами, содержащими XML и встроенные медиаресурсы. Движок применяет следующую стратегию:
-
Структурированная распаковка:Распаковывает документы Office для извлечения встроенных изображений и других медиаресурсов.
-
Сжатие встроенных изображений:Отправляет извлечённые изображения в интеллектуальный компрессор для субдискретизации, как описано выше, значительно уменьшая размер.
-
Перепаковка:Перепаковывает сжатые изображения с исходным XML для создания новых документов Office. Структура и формат документа остаются неизменными, уменьшается только размер изображений.
Параллелизм и пакетная обработка
Гибкая стратегия контроля параллелизма
Для сжатия отдельных файлов движок внутренне использует многопоточность для кодирования/декодирования, полностью задействуя многоядерную производительность. Пакетные задачи сжатия поддерживают управление количеством одновременных задач через конфигурацию авторизации. Серверная редакция может горизонтально масштабировать процессы Worker для повышения общей пропускной способности.
Узнать больше
Изучить архитектуру безопасности и поддержку форматов