Data Press — это консольная Python-утилита для локального сжатия файлов данных.
Основная цель проекта — автоматизировать сжатие видеофайлов и XML-файлов без потерь или максимально близко к lossless-сжатию. Скрипт рекурсивно ищет поддерживаемые файлы в текущей папке, применяет к ним подходящий метод сжатия и сохраняет результат в отдельную директорию result.
Проект был предназначен для того, чтобы найти наиболее оптимальные способоы автоматизированного сжатия файлов без потерь. Основня проблема была в том, чтобы сделать эффективным сжатие видеофайлов. В ходе работы выяснилось, что если видео изначально не в исходном формате и хоть на какой то процент сжато, то любой lossless кодек, который предполагался для сжатия, будет наоборот лишь увеличивать вес видео. Это ограничения самого принципа работы lossless кодеков. Вообщем, по итогу сжатие видео в данной программе очень узкоспециализированно и даёт эффект только в случае, если изначальное видео в формате без абсолютно какого либо сжатия (что почти никогда не встречается в интернете).
Поддерживаются два типа данных:
- видеофайлы;
- XML-файлы.
Для видео используется перекодирование в кодек FFV1 (наиболее эффективно показывающий себя lossless кодек в течении разработки) и упаковка в .mkv контейнер через FFmpeg. Для XML-файлов применяется архивирование в tar.xz, что позволяет сжимать текстовые данные без потерь.
Скрипт выполняет следующие действия:
- рекурсивно ищет файлы в текущей директории;
- поддерживает видеоформаты
.aviи.mov; - конвертирует видео в
.mkv; - использует FFmpeg для сжатия видео;
- применяет кодек
FFV1, подходящий для lossless-сжатия видео; - находит XML-файлы;
- архивирует XML-файлы в
xml_archive.tar.xz; - сохраняет результаты в папку
result; - исключает из обработки папки
resultи.idea.
- Python;
- FFmpeg;
imageio-ffmpeg;subprocess;pathlib;tarfile;- формат архива
tar.xz; - видеокодек
FFV1; - контейнер
.mkv.
data_press/
├── index_final.py # основной скрипт сжатия файлов
└── README.md # описание проекта
git clone https://github.com/AlexFeed/data_press.git
cd data_presspip install imageio-ffmpegВ папку проекта или её подпапки нужно добавить:
- видеофайлы
.aviили.mov; - XML-файлы
.xml.
python index_final.pyПосле выполнения создаётся папка:
result/
В ней сохраняются:
- видеофайлы в формате
.mkv; - архив
xml_archive.tar.xzс XML-файлами.
Пример результата:
result/
├── video_1.mkv
├── video_2.mkv
└── xml_archive.tar.xz
Data Press автоматизирует сжатие наборов данных, состоящих из видео и XML-файлов.
Главная идея проекта — сохранить данные в более компактном виде без потери исходной информации. XML-файлы сжимаются без потерь через архив tar.xz, а видеофайлы конвертируются через FFmpeg с использованием lossless-кодека FFV1.
Проект демонстрирует работу с файловой системой, автоматическим поиском файлов, FFmpeg и архивированием данных средствами Python.