Разработчикът Брандън Лий пусна yt-media-storage – инструмент с отворен код, който ви позволява да съхранявате произволни файлове в YouTube, като ги конвертира във видеоформат без загуби. Проектът се появи в GitHub и веднага предизвика оживена дискусия в общността.
Принципът на работа на инструмента изглежда необичаен, но е технически издържан. Всеки файл (независимо дали е документ, архив, изображение на диск или база данни) се разделя на фрагменти и се кодира във видео с помощта на кодека FFV1 в контейнер MKV.
Това е lossless формат, което означава, че при декодиране получавате идентично копие на оригиналния файл. Видеоклипът се създава с разделителна способност 3840×2160 пиксела при 30 кадъра в секунда и след това може да бъде качен в YouTube като обикновен видеоклип. Когато файлът ви е необходим, трябва само да изтеглите видеото и да го декодирате обратно.
За да подобри надеждността на съхранението, Лий интегрира фонтанни кодове (наричани още „кодове с нефиксирана скорост“) Wirehair. Това е механизъм за кодиране, който добавя допълнителни данни към програмата за всеки случай. Ако част от видеото се повреди по време на обработката в YouTube или се появят артефакти при компресирането, фонтанните кодове позволяват да се възстанови оригиналния файл, дори ако някои пакети данни са загубени. Това е от решаващо значение, като се има предвид, че YouTube прилага собствена обработка на каченото съдържание.
Специално внимание се отделя на сигурността. Инструментът поддържа опционално криптиране на файлове с помощта на библиотеката libsodium и алгоритъма XChaCha20-Poly1305. Потребителят задава парола по време на кодирането и дори ако видеото е публично достъпно в YouTube, е невъзможно да се прочете съдържанието, без да се знае паролата. Това позволява публичните акаунти да се използват за съхраняване на частна информация.
Проектът предлага 2 начина на използване. Конзолният интерфейс е подходящ за тези, които са свикнали да работят в терминал. Командите изглеждат много прости. За да кодирате даден файл във видео е достатъчно да изпълните следната команда:
./media_storage encode --input document.pdf --output video.mkv
Ако искате да криптирате файла, трябва да добавите флаг за криптиране:
./media_storage encode --input archive.zip --output video.mkv --encrypt --password mypassword
Декодирането се извършва чрез обратната команда:
./media_storage decode --input video.mkv --output restored_file.zip
За тези, които предпочитат графичен интерфейс, има отделно приложение media_storage_gui, базирано на Qt6. То поддържа пакетна обработка – можете да добавите няколко файла наведнъж към опашката, да изберете изходна директория и да започнете масово кодиране. Интерфейсът показва ленти за напредъка на всяка операция, съобщения за състоянието и подробен дневник на всички действия. Всички операции се извършват в отделни нишки, така че интерфейсът остава отзивчив дори при обработка на големи файлове.
Технически проектът е изграден с помощта на CMake и изисква съвременен компилатор с поддръжка на C++23. Зависимостите включват FFmpeg за видео, libsodium за криптография, OpenMP за паралелни изчисления и Qt6 за графичния интерфейс. Лий е предоставил подробни инструкции за инсталиране за Ubuntu, Fedora, Arch Linux, macOS и Windows.
Процесът на изграждане е стандартен за проектите CMake:
mkdir build
cmake -B build
cmake --build build
След компилацията получаваме 2 изпълними файла – конзолен media_storage и графичен media_storage_gui.
За тези, които не искат сами да създават проекта, Лий е създал CI/CD конвейер, откъдето можете да изтеглите готови артефакти за създаване на двете версии на приложението. Все пак ще трябва да инсталирате споделените библиотеки (FFmpeg, Qt6 и libsodium), за да го стартирате.
В документацията на проекта има раздел с решения на типични проблеми. Например, ако по време на кодирането се появи грешка „failed to write header“, това означава, че версията на FFmpeg е твърде стара – за да използвате кодека FFV1 с контейнер MP4 ще ви е необходима поне версия 8. Алтернативата е да използвате контейнера MKV вместо MP4.
Очевидно е, че практичността на това решение е под въпрос. YouTube не е проектиран да съхранява произволни данни и не дава гаранции за целостта на съдържанието, което качвате в платформата. Тя може да ги изтрие по различни причини – от нарушаване на правилата до технически неизправности. Не е ясно също така как YouTube ще реагира на масовото качване на видеоклипове, които по същество са кодирани файлове, а не истинско видеосъдържание, като вариантът с изтриването им е най-вероятен.
Всичко това е по-скоро доказателство за концепцията, показващо техническата осъществимост на такова съхранение, отколкото готово решение. Проектът се разпространява под лиценза GNU GPL v3, изходният код е напълно отворен и е достъпен в GitHub.
Всичко важно от света на технологиите, директно в пощата ти.
С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.
Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!