Хостинг неограниченного размера? Звучит как нечто фантастическое и невозможное по законам природы. Примерно как вечный двигатель. Но что, если такое возможно? (не вечный двигатель, конечно, а неограниченный хостинг).

Если подумать, ведь бесплатное хранилище неограниченного размера предоставляют десятки интернет-сервисов, от соцсетей до фотохостингов. Например, ограничение YouTube на размер одного видеоролика — 12 часов или 256 ГБ, но на количество видеороликов ограничений нет.

Теоретически нескольких видеороликов по 256 ГБ достаточно, чтобы спрятать в них зашифрованную копию своего SSD.

Единственное препятствие — они проверяют форматы файлов при загрузке, чтобы избежать злоупотребления сервисом. То есть чисто теоретически достаточно обойти эту проверку — и проблема решена. Но как её обойти?

Сразу приходит в голову вариант изменить расширение файла. Но сегодня такой вариант не проходит практически ни на одном хостинге, потому что они проверяют метаданные и содержимое файлов. Слишком легко отличить медиафайл от случайного набора бит.

Но что, если использовать методы стеганографии — и внедрять полезную нагрузку непосредственно в нативный медиафайл? И действительно, есть готовые инструменты для решения этой задачи. Вот некоторые из них.

Ещё раз подчеркнём — статья носит исключительно образовательный и чисто теоретический характер, материалы описанные в статье не являются руководством к действию и не нарушают законодательство.

YouTubeDrive


YouTubeDrive — это пакет для Mathematica, который перекодирует любые файлы в пиксели RGB. То есть любой поток данных просто транскодируется в видеопоток — а потом обратно. Программа написана пять лет назад чисто для проверки концепции, что такое возможно (PoC).

Промежуточный видеоформат создаётся с единственной целью — для видеохостинга.

То есть схема такая:

АРХИВ ФАЙЛОВ → ВИДЕО → YOUTUBE → и обратно АРХИВ ФАЙЛОВ

YouTubeDrive написан на Wolfram Language (язык Mathematica). Он кодирует/декодирует произвольные данные, а видео автоматически загружаются и выгружаются с YouTube.

Поскольку YouTube не накладывает никаких ограничений на общее количество видео, которые могут загружать пользователи, это обеспечивает фактически неограниченный хостинг. Правда, такой хостинг чрезвычайно медленный, потому что процедура кодирования/декодирования занимает время сначала на локальном ПК, а затем ещё на YouTube.

Вот код пакета. Разумеется, для его работы должна быть установлена сама программа Mathematica.

YouTubeDrive использует стандартные утилиты FFmpeg, youtube-upload и youtube-dl. Эти программы необходимо загрузить и установить отдельно, а перед первым использованием в пакете YouTubeDrive.wl (строчки 75–77) нужно указать места их установки:

FFmpegExecutablePath = "FFMPEG_PATH_HERE";
YouTubeUploadExecutablePath = "YOUTUBE-UPLOAD_PATH_HERE";
YouTubeDLExecutablePath = "YOUTUBE-DL_PATH_HERE";

Например, таким образом:

75 | FFmpegExecutablePath = "C:\\ffmpeg.exe";
76 | YouTubeUploadExecutablePath = Sequence["python",
77 | "C:\\Users\\j0ker\\AppData\\Local\\Programs\\" <>
78 | "Python\\Python35\\Scripts\\youtube-upload.py"];
79 | YouTubeDLExecutablePath = "C:\\youtube-dl.exe";

После установки этих программ и изменения конфигурационных файлов можно открыть сам пакет YouTubeDrive.wl в программе Mathematica (через FileInstall...PackageFrom FileYouTubeDrive.wl).


Перед использованием с помощью youtube-upload загружаем тестовое видео в свой аккаунт, логинимся в YouTube — и получаем токен OAuth. Этот токен аутентификации понадобится для загрузки видеороликов через YouTubeDrive.

Алгоритм работы YouTubeDrive довольно понятен. В пакете две основные функции:

  • Функция YouTubeUpload[bytearr] кодирует массив данных bytearr как простое видео RGB, загружает на YouTube и возвращает ID видео.

    По умолчанию кодируется 64×36 пикселя RGB, которые масштабируются в 2304 квадратика 20×20 пикселей кадра 1280×720. Значения RGB только 0 или 255, то есть получается три бита на квадратик. Значения RGB записываются в файлы .PNG, которые с помощью кодека FFmpeg склеиваются в валидный видеоролик MP4, способный пережить дальнейшее транскодирование на сервере YouTube.

     Monitor[Do[Image`ImportExportDump`ImageWritePNG[
    "frame_" <> IntegerString[i, 10, numDigits] <> ".png", frame[i]],
    {i, numFrames}], ProgressIndicator[i, {1, numFrames}]];
    
    If[numLeftoverBytes > 0, Image`ImportExportDump`ImageWritePNG[
    "frame_" <> IntegerString[numFrames + 1, 10, numDigits] <> ".png",
    finalFrame]];
    
    Run[FFmpegExecutablePath,
    "-i", "frame_%0" <> ToString[numDigits] <> "d.png",
    "-c:v", "libx264", "-preset", "ultrafast",
    "-vf", "scale=1280:720", "-sws_flags", "neighbor", "data.mp4"];
    
    procInfo = RunProcess[{YouTubeUploadExecutablePath,
    "--title=\"DATA-" <> ToUpperCase@CreateUUID[] <> "\"",
    "data.mp4"}];

    В реальности транскодер YouTube может случайно поменять местами значения отдельных пикселей 0 и 255, поэтому большие квадраты 20×20 выполняют роль механизма коррекции ошибок.

  • Вторая функция YouTubeRetrieve возвращает видеоролик YouTube с указанным идентификатором ID videoid, декодирует его и возвращает полученные данные в видео объекта ByteArray:

     RunProcess[{FFmpegExecutablePath,
    "-i", FileNameJoin[{tempDir, videoFile}], "frame_%d.png"}];
    numFrames = Max[FromDigits /@ StringTake[FileNames["frame_*.png"], {7, -5}]];
    
    rdata = Monitor[Join @@ Table[ByteArray[FromDigits[#, 2] & /@
    Partition[Join @@ classify /@ Join @@ ImagePartition[
    First@Image`ImportExportDump`ImageReadPNG[
    "frame_" <> ToString[i] <> ".png"], 20], 8]],
    {i, numFrames - 1}], ProgressIndicator[i, {1, numFrames - 1}]];
    
    lastParts = Join @@ ImagePartition[First@Image`ImportExportDump`ImageReadPNG[
    "frame_" <> ToString[numFrames] <> ".png"], 20];
    numPaddedBits = LengthWhile[
    Reverse[Join @@ classifyLast /@ lastParts], EqualTo[1 / 2]];
    rdata = Join[rdata, ByteArray[FromDigits[#, 2] & /@ Partition[
    Drop[Join @@ classify /@ lastParts, -numPaddedBits], 8]]];

    Вот и всё.

Примечание. На самом сервере YouTube обработка маленького видеоролика размером около 10 МБ занимает примерно 5–10 минут. Таким образом, сразу после завершения YouTubeUpload[bytearr] файл ещё недоступен для скачивания, нужно немного подождать. Только потом можно запускать вызов YouTubeRetrieve.

Пример использования


Насколько мы поняли, для примера автор программы взял из функции Бесселя простенький ByteArray и запустил YouTubeUpload из нашего пакета. В программе Mathematica это делается примерно так:



Результат кодирования массива данных объёмом чуть больше 18 КБ в видеоформат выглядит следующим образом:

Если интересно, можно скачать видеоролик и посмотреть на него, можно даже расшифровать вручную. Вместо youtube-dl для скачивания видео с YouTube сейчас обычно используют более продвинутый форк yt-dlp.

Список доступных форматов:

yt-dlp --list-formats "https://www.youtube.com/watch?v=Fmm1AeYmbNU"
[youtube] Fmm1AeYmbNU: Downloading webpage
[youtube] Fmm1AeYmbNU: Downloading android player API JSON
[info] Available formats for Fmm1AeYmbNU:
ID EXT RESOLUTION FPS │ FILESIZE TBR PROTO │ VCODEC VBR ACODEC ABR ASR MORE INFO
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb0 mhtml 48x27 │ mhtml │ images storyboard
139 m4a audio only │ 6.84KiB 54k https │ audio only mp4a.40.5 54k 22050Hz low, m4a_dash
249 webm audio only │ 700.00B 6k https │ audio only opus 6k 48000Hz low, webm_dash
250 webm audio only │ 700.00B 6k https │ audio only opus 6k 48000Hz low, webm_dash
140 m4a audio only │ 15.43KiB 136k https │ audio only mp4a.40.2 136k 44100Hz medium, m4a_dash
251 webm audio only │ 700.00B 6k https │ audio only opus 6k 48000Hz medium, webm_dash
17 3gp 176x144 6 │ 26.54KiB 222k https │ mp4v.20.3 222k mp4a.40.2 0k 22050Hz 144p
394 mp4 256x144 25 │ 25.28KiB 235k https │ av01.0.00M.08 235k video only 144p, mp4_dash
160 mp4 256x144 25 │ 82.20KiB 765k https │ avc1.4d400c 765k video only 144p, mp4_dash
278 webm 256x144 25 │ 72.33KiB 673k https │ vp9 673k video only 144p, webm_dash
395 mp4 426x240 25 │ 66.86KiB 622k https │ av01.0.00M.08 622k video only 240p, mp4_dash
133 mp4 426x240 25 │ 254.76KiB 2371k https │ avc1.4d4015 2371k video only 240p, mp4_dash
242 webm 426x240 25 │ 163.19KiB 1519k https │ vp9 1519k video only 240p, webm_dash
396 mp4 640x360 25 │ 89.98KiB 837k https │ av01.0.01M.08 837k video only 360p, mp4_dash
134 mp4 640x360 25 │ 363.73KiB 3386k https │ avc1.4d401e 3386k video only 360p, mp4_dash
18 mp4 640x360 25 │ ~440.62KiB 3524k https │ avc1.42001E 3524k mp4a.40.2 0k 44100Hz 360p
243 webm 640x360 25 │ 238.27KiB 2218k https │ vp9 2218k video only 360p, webm_dash
397 mp4 854x480 25 │ 116.18KiB 1081k https │ av01.0.04M.08 1081k video only 480p, mp4_dash
135 mp4 854x480 25 │ 469.24KiB 4368k https │ avc1.4d401e 4368k video only 480p, mp4_dash
244 webm 854x480 25 │ 298.72KiB 2780k https │ vp9 2780k video only 480p, webm_dash
398 mp4 1280x720 25 │ 150.16KiB 1397k https │ av01.0.05M.08 1397k video only 720p, mp4_dash
136 mp4 1280x720 25 │ 512.91KiB 4774k https │ avc1.64001f 4774k video only 720p, mp4_dash
22 mp4 1280x720 25 │ ~614.20KiB 4913k https │ avc1.64001F 4913k mp4a.40.2 0k 44100Hz 720p
247 webm 1280x720 25 │ 380.61KiB 3543k https │ vp9 3543k video only 720p, webm_dash

Скачиваем формат 22:

yt-dlp --format 22 "https://www.youtube.com/watch?v=Fmm1AeYmbNU"
[youtube] Fmm1AeYmbNU: Downloading webpage
[youtube] Fmm1AeYmbNU: Downloading android player API JSON
[info] Fmm1AeYmbNU: Downloading 1 format(s): 22
[download] Destination: DATA-34DFE96A-BFE6-4405-A9E3-CFB9959CD3CA [Fmm1AeYmbNU].mp4
[download] 100% of 527.20KiB in 00:00

На этом файле в Mathematica можно запустить функцию YouTubeRetrieve из пакета YouTubeDrive, которая выполнит обратное преобразование.

Конечно, такая схема кодирования не очень эффективна — примерно 1 минута видео на 1 МБ информации. Этот параметр можно легко увеличить на порядок (до 10 МБ на минуту видео), если вместо квадратов 20×20 внедрить какой-нибудь нормальный алгоритм коррекции ошибок.

YouTubeDrive — чисто экспериментальная программа. Автор подчёркивает, что ни в коем случае не поддерживает её использование в промышленных масштабах. Как мы уже сказали, программа написана пять лет назад чисто для доказательства концепции.

YouBit


Идея хранилища файлов на YouTube выглядит весьма привлекательно. Два года назад появилась программка fvid, которая кодирует файлы без необходимости устанавливать Mathematica. Из зависимостей ей нужен только FFmpeg и libmagic.

Она работает проще. Кодирование произвольного файла в видеоформат:

fvid -i [input file] -e
fvid -i [input file] --framerate 1 -e
fvid -i [input file] --password "xyz" -e

Декодирование:

fvid -i [input video] -d

В продолжение этой темы недавно вышла утилита YouBit. Так сказать, последнее достижение прогресса в данной области.

По сравнению с предшественниками — YouBit значительно усовершенствован. Можно сказать, что это новый уровень по качеству кодирования.

Во-первых, здесь автор отказался от использования цветовой субдискретизации, а всю информации кодирует только в канале яркости. В результате получаются чёрно-белые видеоролики, но зато кодирование и декодирование становятся заметно проще — и выполняются быстрее.

В канале яркости пиксели принимают значение от 0 до 255. Соответственно, если мы кодируем в пикселе один бит (параметр bpp: 1, то все значения от 128 до 255 воспринимаются как единица, а меньшие значения — как 0. Для примера, если кодировать в одном пикселе два бита (00, 01, 10 или 11), то весь диапазон яркости разбивается на четыре области (0–63, 64–127, 128–191, 192–255) и так далее. Чем больше бит на пиксель, тем меньше размер файла и выше вероятность некорректной расшифровки конкретного бита после транскодирования видео на серверах YouTube.

Во-вторых, автор придумал оригинальный способ оптимизации видеороликов конкретно под специфический энкодер YouTube, чтобы повысить надёжность их последующего декодирования. Правда, теперь для успешного декодирования файлов уже необходимо их сначала залить на YouTube, а потом скачать результат.

В-третьих, YouBit работает с видео любого разрешения. Оптимально 1920×1080.

Наконец (в-четвёртых), автор реализовал функцию «нулевых фреймов» — вставки чёрных кадров между кадрами с полезной нагрузкой, что позволяет снизить битрейт примерно на 40% (и размер файла) при кодировании видео на сервере YouTube.

Использование:

python -m youbit upload C:/myfile.txt chrome

Аргумент chrome указывает, из какого браузера YouBit должен извлечь куки для аутентификации на YouTube (соответственно, этот браузер должен авторизоваться на studio.youtube.com/, открыть сессию и получить куку).

Затем загрузка происходит непосредственно с помощью headless-браузера Selenium в фоновом режиме. Очень грамотный подход.

Скачивание и обратное декодирование видео:

python -m youbit download https://youtu.be/dQw4w9WgXcQ

Декодирование локального видео, скачанного с YouTube:

python -m youbit decode C:/myvideo.mp4

Все операции можно выполнять через Python API.

Пример видео:

Как мы уже говорили, ограничения YouTube на размер видеоролика — 12 часов или 256 ГБ. Если аккаунт не верифицирован, ограничение 15 минут.

Настройка YouBit по умолчанию на размер одного файла — 9 ГБ, но её можно скорректировать при желании.

Неограниченный хостинг в других местах


Неограниченные хранилища файлов предоставляют и другие сервисы, например:

  • Telegram (ограничение по размеру файлов 2 ГБ, в платной версии 4 ГБ)
  • Соцсети (любые файлы можно хранить под видом видеозаписей и фотографий), обычно там хостинг неограниченного размера
  • Habrastorage

Для работы с этими «нетрадиционными хостингами» можно написать свой клиент/файл-менеджер — небольшую программку для закачки файлов через YouBit, чтобы не запускать её вручную.

В идеале хотелось бы добавить туда следующие функции:

  • Поддержка разных хостингов (разные соцсети, фото- и видеохостинги), чтобы YouBit копировал видео с нашими файлами не только на YouTube, но и на другие хостинги, которые предоставляют неограниченное дисковое пространство бесплатно.
  • Резервное копирование. Поскольку каждая площадка рассматривается как временная, должно быть предусмотрено избыточное дублирование.
  • Грамотная синхронизация: обновление новых версий или новых файлов без переписывания всего архива.

Но это в идеале. В минимальном варианте хватит и простого скрипта, который в пакетном режиме просто кодирует через YouBit пару сотен файлов в формат MP4 — и заливает видеофайл на несколько видеохостингов.

Что касается хранения файлов на YouTube (и в других сервисах крупных корпораций) — суть сводится к тому, чтобы использовать инфраструктуру не совсем так, как это предполагается, но при этом совершенно легально. Повторюсь, если пользователь маскирует свои личные файлы под видеоролики и заливает их на публичный хостинг, он никак не нарушает законодательство ни одной страны. В любом случае это не коммерческая программа, а просто теоретический эксперимент, а повторять его или нет — решать вам.


НЛО прилетело и оставило здесь промокод для читателей нашего блога:

15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.

Комментарии (95)


  1. Thane784
    18.07.2022 11:29
    +124

    Вот из-за таких, как вы, в Бургер Кинге и убрали автомат с безлимитными напитками.


    1. GenkaOk
      18.07.2022 17:20
      +1

      Убрали? У нас в городе наоборот появился несколько лет назад, только теперь там Байкал и дюшес.



    1. myhambr
      19.07.2022 19:12
      +1

      Один стаканчик и точка.

      И вообще, не хватает звука загрузки с ленты ZX Spectrum :)


      1. Ndochp
        19.07.2022 23:45
        +1

        В нашем фудкорте — объявления нет, долив через продавцов.


  1. boulder
    18.07.2022 11:41
    +10

    Что-то мне эти чёрно-белые видео напоминают. Вот недавно новейший телескоп снял похожую, казалось бы, хаотичную звёздную картинку. Хотя, подождите!..


  1. Thane784
    18.07.2022 11:49

    Кстати, пользоваться услугами вашего хостинга я бы тоже не стал. Если вы считаете, что легально обмануть того, кто предоставляет вам услуги - это нормально, и даже хвастаетесь на Хабре своим способом сделать это, может быть вы и с клиентами так поступаете ? Не считаю что нужно поддерживать такие действия. Эта статья, несмотря на высказывания вроде "Автор подчёркивает, что ни в коем случае не поддерживает её использование в промышленных масштабах", должна быть заминусована. "Не поддерживает", но тем не менее способствует, в том числе и в моральном виде, не говоря уже о предоставляемой информации к осуществлению технической возможности подобных действий. Данный материал способствует распространению мнения, что легальный обман - нормально, и это плохо. В том числе плохо и для репутации вашей же компании.


    1. RalphMirebs
      18.07.2022 12:10
      +13

      Где тут обман? Если физически можно загрузить файл, то нет вопросов. Автор не взламывает ничего у хостера. Или у Ютуба есть запрет на загрузку «хаотических » видеофайлов?


      1. Thane784
        18.07.2022 12:20
        +29

        Это злоупотребление крайне свободными правилами сервиса. Если каждый начнет делать так, как автор, то отсутствие ограничения на количество видеороликов станет коммерчески невыгодным и компания введет дополнительные запреты, что в конченом итоге повлияет на обычного пользователя, причем в негативную сторону. Я уже приводил как пример безлимитные напитки в Бургер Кинге - да они безлимитные, но нормально ли взять 19-литровую бутылку и переливать содержимое автомата туда ? Я считаю что нет. Если будет слишком много людей, считающих что да, то безлимит станет невыгодным для компании, а пострадаю в итоге от этого я, как обычный пользователь - исчезнет очень удобная для меня услуга.


        1. RalphMirebs
          18.07.2022 12:34
          +8

          В Кинге можно только в их стаканчики. Не знаю в какой стране льют в бутылки, но часто платит один, а наливают троим. Это нарушение. Если такое наблюдается — нужно поставить систему контроля в виде сотрудника и гонять зайцев.

          Если введут запрет на число роликов — право компании. Или они добавят какие-то механизмы контроля содержимого, что тоже нормально. Но юридически пока нет запрета или даже предупреждения. А в Кинге есть и в этом большая разница.


          1. Thane784
            18.07.2022 13:02
            +11

            Раньше было крайне легко зарегистрировать новый e-mail адрес без номера телефона, сейчас это сделать все сложнее - многие почтовые клиенты ограничивают такую возможность. Почему ? Потому что пользователи злоупотребляют данной возможностью и регистрируют тысячи бот аккаунтов. Недавно мне пришлось помучиться чтобы зарегистрировать вторую почту и это вина тех кто злоупотребляет сервисом. Ограничения ввести можно, но если они не слишком жесткие - "гонять зайцев", их всегда можно обойти. (Я бегаю быстрее). А введение очень жестких ограничений в первую очередь вредит мне как обычному пользователю - о чём я собственно и говорю. Злоупотребление сервисом влечёт к ответной реакции, негативно отражающейся на всех клиентов в целом. Возможно, ютубу прямо сейчас это не грозит (размеры жульничества не те), но тем не менее, я считаю, что подобное в принципе должно осуждаться.


            1. vis_inet
              18.07.2022 13:20
              +12

              Читал мнение, что привязку телефона при регистрации почты требуют совсем по другим причинам.


            1. tlittle
              19.07.2022 23:23

              Это вина исключительно российского законодательства, которая обязывает соц сети идентифицировать пользователей.


              1. Tarakanator
                20.07.2022 09:55

                Но при этом не обязывает сделать доступным телефон для пользователей.
                В деревне поставил антенну для 4G интернета,интернет появился, а мой дядя столкнулся с проблемой, что не может получить СМС для подтверждения личности при регистрации, т.к. качество связи без антенны не позволяет даже оперативно принимать СМС.


          1. Thane784
            18.07.2022 13:08
            +5

            Система контроля и человек "гоняющий зайцев" будут требовать дополнительных денежных затрат. Ресторану придется повысить цены, чтобы окупить внедрение системы контроля, и выплачивать зарплату человеку "гоняющему зайцев". На меня, как человека, просто пришедшего поесть, это отразится негативно.


            1. Didimus
              20.07.2022 18:08

              Так человека поставят только если расходы на него будут ниже, чем убытки от зайцев


          1. follow_the_wr
            18.07.2022 13:20
            +25

            Ниже приведено несколько примеров действий, запрещенных на YouTube. Этот список не является исчерпывающим.

            • Публикация контента, обманным путем перенаправляющего зрителей на другой сайт.

            • Неоднократная загрузка одних и тех же материалов на один или несколько каналов.

            • Публикация большого количества контента, скопированного с других каналов.

            • Попытки заставить пользователей установить вредоносное ПО или посетить сайт, на котором могут быть украдены их данные.

            • Загрузка автоматически созданного некачественного контента.

            • Обещания денежных вознаграждений, подарков, бесплатного ПО или бонусов для игр за определенные действия, например скачивание каких-либо программ или приложений.

            • Добавление большого числа материалов, предназначенных для аффилированного маркетинга, на специально созданные для этого каналы.

            Источник: https://support.google.com/youtube/answer/2801973?hl=ru&ref_topic=9282365#zippy=%2Cспам


            1. iig
              18.07.2022 15:08
              +5

              Загрузка автоматически созданного некачественного контента

              Достаточно качественный черно-белый шум. ;)

              Конечно, если кто-то пожалуется - грохнут со спокойной совестью.


            1. covax80
              18.07.2022 18:14
              +7

              Под это определение можно треть роликов на ютубе определить. Что является критерием качества? Ролик на 10 часов с навязчивой мелодией или качественный белый шум для экспериментов по сенсорной депривации?


              1. TimsTims
                18.07.2022 19:47
                +11

                Это правило и были создано для возможности удалить любое видео, которое им не понравится, и чтобы к ним потом не пришли с претензиями.


              1. leok
                18.07.2022 22:29

                Качественный белый шум не будет автоматически созданным. Ролик на 10 часов мне не жалко.


          1. dartraiden
            19.07.2022 00:30
            +5

            В Кинге можно только в их стаканчики.

            И люди набирали в стаканчики, а потом переливали в канистры.



            Там в видео прям характерная реплика «а чего ты вписываешься, это же не твоя компания».


            1. sim31r
              21.07.2022 01:07

              Для большой компании эта потеря статистически не заметна. А то и в плюс пойдет, как реклама. Так же и ребятам что 5 литров пепси отлили она не нужна в таких количествах. Перепродать они её не смогут, выпить невозможно столько. Проблема надуманна. Как, например, катание в бесплатном лифте, можно злоупотреблять лифтом, но много ли желающих?


              1. iliar
                21.07.2022 09:01

                Лень искать фото, но таких "лайфхакеров" с ведёрками там было не оди и не два. В некоторых местах из них даже очереди скапливались. И обычным посетителям приходилось ждать пока очередная быдлосемейка наполнит все свои тазики и ведёрки.

                Так что ИМХО. Основная проблема статьи в позиционировании. Если бы вместо тезиса "ищем халяву" было бы "интересно, а какой максимальной плотности данных получится добиться, прежде чем алгоритмы сжатия начнут портить информацию". Вроде мелочь, но другая подача и статья бы совсем по другому бы воспринималась.


          1. tlittle
            19.07.2022 23:22

            Можно только в их стаканчики. Поэтому из автомата набирается стакан, переливается в ведро (20-литровую бутыль), набирается стакан - переливается в ведро, набирается стакан... С формальной точки зрения правила соблюдены.


        1. Firelander
          18.07.2022 13:08
          +8

          Я думаю, автор вполне способен позволить себе оплатить облачное хранилище нужного ему размера, а все эти инструменты им создавались исключительно с точки зрения академического интереса. По-моему, это вполне интересная задача, разобраться в способах кодировании информации и оптимизировать алгоритм под конкретные условия реальной жизни (в данном случае алгоритм ютуба, но могло быть что угодно).

          Выкладывать в общий доступ удобные инструменты для подобных злоупотреблений может быть конечно не очень хорошо, но автор явно не первооткрыватель в этой области, если это кому-то нужно и востребовано, подобные средства рано или поздно появились бы, да и наверняка что-то подобное уже существует в десятке вариантов.


          1. Thane784
            18.07.2022 13:17
            -3

            "если это кому-то нужно и востребовано оно рано или поздно появились бы," - вы считаете, что точка зрения "Если не я украду эту вещь, её украдет кто-нибудь другой, так что я ничего плохого не делаю", правильна ? С какими мотивами выкладывался этот пост, не столь важно - у автора были одни мотивы, а у людей прочитавших этот пост могут возникнуть уже совсем другие.


            1. Firelander
              18.07.2022 13:36
              +6

              Автор ничего не крадет, автор создает инструмент. Если кто-то будет пользоваться инструментом для злоупотреблений, то он и будет отвечать по закону (в данном случае ToS ютуба)


              1. Thane784
                18.07.2022 13:40
                -10

                Создавать и распространять инструменты для злоупотреблений это правильно ?


                1. Serge78rus
                  18.07.2022 14:03
                  +14

                  Обычный пластилин для детского творчества может быть использован злоумышленником для снятия слепков с ключей потенциальных жертв. За это будем осуждать производителя пластилина? Список подобных аналогий можно продолжить до бесконечности.


                  1. DreamingKitten
                    18.07.2022 15:42
                    +3

                    Пластилин может быть использован и в мирных творческих целях, а у этого инструмента такие есть?


                    1. chyvack
                      18.07.2022 16:52
                      +3

                      Развитие навыков программирования и оптимизации алгоритмов?! Чем не "мирные творческие цели"?


                      1. DreamingKitten
                        18.07.2022 17:36
                        +1

                        Чувствую подмену тезиса я. Речь шла о конкретных применениях инструмента. Вы же аргументируете задачами более общего класса, для которых такой инструмент не специфичен. Проще говоря, развивать навыки и оптимизировать можно и на совершенно других задачах.


                      1. chyvack
                        19.07.2022 20:10

                        оффтоп. Это мне напоминает моего учителя русского языка и тему правописания частицы "не". Пишется слитно, если можно подобрать слово синоним или словосочетание, а это можно сделать всегда! Так и здесь, можно придумать как использовать написание такого вида программ "в мирных творческих целях".


                      1. kirichenec
                        19.07.2022 19:00
                        +1

                        Делал слепки ключей, но не пользовался ими. Ничего страшного


              1. follow_the_wr
                18.07.2022 13:53
                +3

                Неизвестно нарочно вы допускаете логическую ошибку или с умыслом, но разницу нужно понимать.

                Производитель паяльника или утюга не несет ответственности за использование этими приборами в качестве орудий пыток или убийства, поскольку поставляет инструкцию с прямыми запретами

                Производитель отмычки, перехватчика сигнала автобрелка как минимум должен быть готов к публичному осуждению, а как максимум понести уголовную ответственность


                1. Thane784
                  18.07.2022 13:57
                  -10

                  Я с вашим последним комментарием согласен полностью. А как считаете чем отличается утюг от отмычки ? Наверное тем, что у утюга есть полезное, не вредящее обществу применение, и оно является основном для данного предмета. Как считаете, а основное предназначение предоставленного автором в статье полезно для общества ? Или наоборот, данный код - отмычка ?


                  1. follow_the_wr
                    18.07.2022 14:03
                    +10

                    Автор статьи сам ответил на данный вопрос:

                    "Единственное препятствиеони проверяют форматы файлов при загрузке, чтобы избежать злоупотребления сервисом. То есть чисто теоретически достаточно обойти эту проверку — и проблема решена. Но как её обойти?

                    Слишком легко отличить медиафайл от случайного набора бит.

                    Но что, если использовать методы стеганографии — и внедрять полезную нагрузку непосредственно в нативный медиафайл? И действительно, есть готовые инструменты для решения этой задачи. Вот некоторые из них."

                    Комментарии добавлять не буду


                    1. Thane784
                      18.07.2022 14:07
                      -10

                      Хорошо, даже если мы признаем что изготовления вредоносного кода в данном случае не происходит. Однако распространение его ведь всё равно имеет место быть ?


                1. Max_JK
                  19.07.2022 09:49

                  отмычку можно использовать для доступа к своему жилищу от которого был утерян ключ

                  перехватчики сигнала часто используются полицией в целях борьбы с преступностью

                  для любой вещи можно найти мирное применение, оружие для самообороны, бомбы для работ в шахте и т.д


          1. tooler
            18.07.2022 14:56
            +1

            Был POC драйвер для создания в системе виртуального диска, на котором всё хранилось в гуглопочте. Ужас что было, все злоумышленники начали использовать, акции рухнули, биткоин... а он было тогда?
            На пороге катастрофы были, почта могла треснуть и открылась бы изнанка! Сейчас мы в такой же ситуации опять.
            На гитхабе этому репо уже пять лет. Пять лет мир в опасности.


            1. Moraiatw
              18.07.2022 16:40
              +1

              Помню этот софт. Тогда еще не было облачных файлохранилищ. Софт создавал в системе новый диск, при копировании на/c него, информация копировалась в/на гулопочту. Интересный был концепт.


        1. Wexter
          18.07.2022 14:28
          +1

          Тогда это видео вам точно не стоит смотреть https://www.youtube.com/watch?v=y2F0wjoKEhg


        1. ermouth
          18.07.2022 19:50
          +4

          Если каждый начнет делать так

          Каждый не начнёт, и вы это прекрасно знаете.

          Как и ни одного экспериментатора ваше удушливое морализаторство не остановит – и это вы тоже кстати знаете.

          Есть такая детская сказка «Умная Эльза» (которая в самом деле дура) – так, просто вспомнилось.


        1. Astroscope
          18.07.2022 22:29
          +3

          крайне свободными правилами сервиса

          Если вы про youtube, то пометка "сарказм" была бы желательна для тех многих, кто этот самый сарказм не распознал.


        1. sim31r
          21.07.2022 01:01

          Автор наоборот, привлек внимание к Ютубу. Его данные примерно одна миллиардная от содержимого Ютуба и вряд ли такое будет массово. Если будет массово, программисты на Ютубе вычистят такой мусор за 5 минут. Проблемы вами описанной не существуют. Можно подумать сейчас там только шедевры заливают.


      1. Tangaroa
        18.07.2022 14:26

        ютуб, бывает, удаляет файлы, кажущиеся бессмысленными. У них есть что-то насчёт этого в ToS. Мне, например, снесли видеофайл с часом тишины на фоне пустого экрана.. мол, "сомнительное содержание". Потом, правда, восстановили -- уже не помню, как :)


    1. Zangasta
      18.07.2022 12:26
      +3

      Данный материал способствует распространению мнения, что легальный обман - нормально

      Начнем с того, что это называется "злоупотребление сервисом" --- и это действительно проблема. Самый яркий пример --- шведский стол. Количество бесплатной еды ограниченно и посетители, набирая полные тарелки --- и выбрасывая еду --- вредят остальным посетителям и владельцам.

      Но именно в этом случае --- злоупотребления нет. Автор статьи увидел возможность злоупотребления и рассказал о ней. В случае, если этот способ перестанет быть курьёзом --- владельцы Тюбика решат проблему.


    1. S1re10k_4f99
      19.07.2022 09:07
      +3

      Да если бы кто-то существенно этим злоупотреблял. Даже если предположить, что все прочитавшие статью начнут сливать все свои данные таким образом в Ютуб, то всё равно обычный стример, который стримит 4к60 по 2-3 часа по 3-4 раза в неделю, скорее всего переплюнет по объему данных всех этих хранителей.

      К тому же, много раз видел утверждение, что трафик обходится ютубу куда дороже чем хранение. А какой будет трафик у таких хранителей? Да около нулевой, так-как они явно не будут выкачивать эти данные туда сюда очень часто. Да даже если предположить, что будут выкачивать по 10 раз в день - это всё равно ничто по сравнению с количеством просмотров у стримеров.

      Плюс, есть вероятность, что Ютуб хранит все загруженные видосы в оригинале или почти в оригинале, и только для просмотра выдаёт пошакаленное. Это предположение основано на том, что некоторые видосы 10 летней давности, перекодированные в av1, имеют качество лучше, чем в других кодеках, а чтобы так сделать нужно иметь оригиналы. Значит объемы хранения для него совсем не критичны и как бы вы не старались, всё равно не сможете как либо повлиять на Ютуб.


  1. JPEGEC
    18.07.2022 11:57
    +9

    Я правильно понимаю что перекодировка видео самим ютубом не мешает восстановить первоначальную информацию?


    1. momoru_kun
      18.07.2022 12:14
      -2

      Верно, потому что инфа пишется в RGB значения пикселей


      1. Skigh
        18.07.2022 12:45
        +14

        А перекодировка разве не меняет RGB значения пикселей?
        Вообще, вопрос ютубовской перекодировки, её влияния на доступную пропускную способность, совместимость с различными способами кодирования и т.д. не раскрыт.


        1. Static_electro
          18.07.2022 13:06
          +6

          да, интересней было бы с рассказом про перекодировку, контроль целостности и вотэтовсё


  1. HappyGroundhog
    18.07.2022 12:39
    +1

    Очень напоминает загрузку Spectrum с кассеты) Наверняка можно в качестве аудиодорожки положить к роликам привычный цифровой шум.


  1. dravor
    18.07.2022 13:13
    +5

    Потом видеохостинг пережмет видео в другой кодек и прощай бекап всех данных!


    1. chupasaurus
      18.07.2022 13:52

      Да того же кодека достаточно, настройки-то свои.


    1. hogstaberg
      18.07.2022 14:36
      +1

      Так тут же явно генерируются здоровенные квадраты, имеющие по осям RGB четко либо максимальное, либо минимальное значения. Это нужно чрезвычайно шакально пережимать для потери возможности раскодировать назад.


      1. follow_the_wr
        18.07.2022 15:10

        Это про 18 КБ массив данных говорите про здоровенные квадраты?

        Я думаю выше имелся ввиду масштаб позначительней


      1. dravor
        18.07.2022 17:05
        +1

        ToneMapping, улучшение с помощью новоизобретенного AI (чик-чик и в продакшн — что может пойти не так?), добавление-убирание эффекта Motion Blur, еще один умник налепил стеганографией скрытые логотипы ТыТруба по всему видео «чтоб не воровали» — причин ой как много. Это только если дублировать данные в кадре по 2-3 раза, для защиты от подобных возможных потерь.


        1. TimsTims
          18.07.2022 19:51
          +7

          И вот, мы изобрели QR code.


  1. CoolCmd
    18.07.2022 13:21

    раньше вроде ютуба хранила исходный файл видео. сейчас это не так?


    1. chupasaurus
      18.07.2022 13:51

      С 2009 года как минимум всё сами пережимают.


      1. CoolCmd
        18.07.2022 14:25
        +2

        пережимают для показа, но исходный файл гугл хранит, и его можно скачать, например в google takeout (название по памяти пишу)


        1. chupasaurus
          18.07.2022 14:41

          Название правильное, на счёт исходника большие сомнения, знакомый в субботу вытаскивал из Photos содержимое и там всё отшакалено, возможно какое-то время исходники таки хранятся. При переезде на VP9 пережимали из своих h264, а не исходников.


          1. S1re10k_4f99
            19.07.2022 09:31

            Странно, каким образом вы заметили, что пережимали из своих h264? Я например видел много видов, у которых в vp9 лучше качество чем в h264, значит в vp9 пережимали всё таки из исходников, ну или близкого к ним качества. Так же сейчас с av1 тоже самое. Есть видосы 10 летней давности, пережатые в av1 с лучшим качеством чем в vp9.

            Но конечно таких видосов мало, в основном это исключения, потому что в основном у vp9 и av1 битрейт меньше чем у h264 и за счёт меньшего битрейта и качество хуже. Например такие соотношения размеров довольно часто встречаются: h264 - 100мб, vp9 - 75мб, av1 - 60мб. Конечно в таком случае vp9, с большой вероятностью хуже чем h264, а av1 хуже чем vp9. А когда соотношения например такие: h264 -100мб, vp9 - 85мб, av1 - 76мб, тогда ситуация обратная.


        1. t38c3j
          18.07.2022 20:08

          Кажется оригиналы они не хранят, я загружал ролик размером 2гб в одном кодеке а в бекапе данных он уже в другом и весит 9гб, с фото так же, как ниже подметил человек, даже по программе для первых пикселей хранение оригинала не совсем оригинал , оно да в высоком качестве но это не оригинал байт в байт


          1. Alexsey
            19.07.2022 04:16

            Во времена когда ютуб только-только запускал 720p/1080p/4k они автоматически делали эти разрешения доступными для видео, которые были загружены в них до того как ютуб начал официально их поддерживать, то есть оригиналы для перекодирования в новые поддерживаемые разрешения у них оставались. А вот давали ли они когда-либо скачивать эти файлы я уже сказать не могу.

            Думаю что с текущими объемами от идеи хранения оригинальных файлов все же отказались.


          1. CoolCmd
            19.07.2022 13:47

            только что скачал весь свой ютубовский канал, всего 13 гб, самый большой файл 2,8 гб. видео оригинальное, не пережато. такие дела...


      1. Didimus
        20.07.2022 18:13

        Причём для обычных пользователей очень шакалистое пережатие, все детали съедает. А у топовых блогеров такого не происходит


        1. dimka11
          20.07.2022 18:52

          От популярности видео зависит. Если видео не 4K/2K, то пока не наберётся какое-то количество просмотров, оно будет в h.264, а не VP9. Имеет смысл в видеоредактор делать апскейл с 1080p до 4k и уже в таком виде загружать.


          1. dimka11
            20.07.2022 18:54

            Со стримами ещё хуже, live идёт в 1440p VP9, а запись 1080p h.264, притом, что сначала VP9 доступно, а потом пропадает


  1. follow_the_wr
    18.07.2022 14:17
    +2

    В идеале хотелось бы добавить туда следующие функции:

    • ...

    Но это в идеале. В минимальном варианте хватит и простого скрипта, который в пакетном режиме просто кодирует через YouBit пару сотен файлов в формат MP4 — и заливает видеофайл на несколько видеохостингов.

    Автор, в идеале хотелось бы для чего? И хватит в минимальном формате для чего?

    Вы же теоретически проверяете работоспособность инструментов и не призываете к действиям, нарушающим условия сервиса


  1. Evengard
    18.07.2022 14:47

    Для телеграма есть уже публичная файлопомойка - UploadGram.


  1. SLY_G
    18.07.2022 14:49
    +3

    1. vis_inet
      18.07.2022 15:02

      Где сейчас брать и видак и кассеты?


      1. unwrecker
        18.07.2022 15:38
        +2

        Теперь вот Ютуб вместо всего этого :)


    1. Antonto
      18.07.2022 16:58

      Облачный Арвид!


  1. Raja55
    18.07.2022 15:44
    -2

    Формально, после трансляции карты звездного неба, можно делать вставки с видами природы. Т.о. исключается нарушение пункта правил: Загрузка автоматически созданного некачественного контента.

    Так приятно будет осознавать, что после заставки с котиками идет трансляция второй серии любимого кинофильма от бразерс, представленной в виде картинки с далекими звездами.


  1. Alexsey
    18.07.2022 16:01
    +1

    Игрался с чем-то подобным ради интереса. Просто конвертировал поток бит в квадраты на поле 640x480. Но у меня максимально неэффективно было - квадраты сделаны достаточно большими чтобы пережимание особо ничего не сломало так что 1.7мб кодировались в 12 минут видео.


  1. ALexhha
    18.07.2022 16:05
    +1

    А что будет, когда прилетит страйк на подобного рода видео ? Я так понимаю заблокируют все видео на аккаунте, не уверен дают ли их скачивать в таком случае


    1. Diamos
      18.07.2022 17:08
      +4

      а зачем видео расшаривать? Залить и закрыть доступ к ролику.


    1. RalphMirebs
      18.07.2022 20:07
      +20

      Первые двадцать секунд видео: приходит мужик в офис, показывает флешку и говорит — сейчас будем проводить сеанс цветотерапии. Вокруг компа расставляются кресла, народ садится, флешка вставляется в комп, камера наезжает на экран, после чего начинается два часа цветного мельтешения. Последнее двадцать секунд: камера отьезжает назад, мужик и зрители спят в креслах. Короткие титры.

      (при декодировке начало и конец ролика просто не анализируются)


      1. Pavel1114
        19.07.2022 05:30
        +8

        так может в тренды уйти


      1. FishDude
        19.07.2022 17:22
        +2

        Вы кратко изложили рассказ "Белая трость калибра 7.62".


        1. ermouth
          20.07.2022 18:51

          Надо на фоне ещё тюлилихум-ааухум звуком, чтоб точно эффект был )


      1. pehat
        21.07.2022 03:42

        Где же я такое видел-то… да вот же!


  1. sirocco
    18.07.2022 21:30
    +3

    Прикольно будет если ютуб начнёт врезать рекламу в видео.


    1. roach1967
      19.07.2022 09:35
      +1

      Причём в саму кодировку, а не картинкой


  1. 1MK-Ultra
    19.07.2022 10:43
    +1

    Зря вы все спорите. Уже давно есть дармовые файлохранилища. И хранить там можно гораздо больше чем 250Гб * X. Человек привел, как пример, ради эксперименту.


    1. ciuafm
      19.07.2022 12:06

      "дармовые файлохранилища" - А с этого места пожалуйста поподробнее.

      Кстати удивлен что никто не подумал о том, что сжатие видео начинается с конвертации в YUV 4:2:2 или что-то подобное. Поэтому картинки нужно генерировать опираясь на это , а не RGB 8:8:8.


      1. 1MK-Ultra
        19.07.2022 13:48

        Google drive, mail.ru cloud, yandex disk


      1. Balling
        19.07.2022 19:14

        Все видео на youtube 4:2:0. Как и везде, на Netflix, на Apple TV+, все Blu-ray. 422 и 444 это тоьбко некоторые спутниковые фиды (т.е. между двумя спутниками, а не для конечного пользователя) и камеры не в телефонах.

        Можно обойти, кодируя в 4k 420. Это как раз 444 1080p если отбросить 3/4 Y plane.


      1. KrivisKrivaitis
        20.07.2022 08:36

        Покупка шары в безлимитном Google Teams Drive, цена вопроса раньше была $1, сейчас повыше. Это работает до сих пор, как ни странно.
        Все сказанное про "из-за таких как вы", конечно же применимо к этому способу. :)


        1. dimka11
          20.07.2022 18:56

          Которую в любой момент могут заблокировать?


  1. ViktorYar
    20.07.2022 15:13

    Признак мастерства или...? Пилить буравчиком и сверлить ножовкой...

    Я бы ещё вспомнил про передачу скрытых сообщений. Помню для фото: фото1+файл сообщения = фото2. При этом, если сообщение << (значительно меньше) фото1, то котик на фото2 похож на котика на фото1. Обратно: сообщение = котик2 "вычесть" котик1. Для того чтобы вскрыть сообщение надо а) догадаться, что фото содержит сообщение б) знать правила сложения/вычитание т. Е. Шифрования в) владеть ключом (фото1). При переносе этой концепции к видео ещё попутно достигаются аксиомы криптографии об абсолютной устойчивости ко взлому (длинна ключа больше длинны сообщения + ключи не повторяются)..

    P. S. For example - Gifshuffle