Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Data Press

Описание проекта

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        # описание проекта

Как запустить

1. Клонировать репозиторий

git clone https://github.com/AlexFeed/data_press.git
cd data_press

2. Установить зависимость

pip install imageio-ffmpeg

3. Поместить файлы для сжатия

В папку проекта или её подпапки нужно добавить:

  • видеофайлы .avi или .mov;
  • XML-файлы .xml.

4. Запустить скрипт

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.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages