Skip to content

Latest commit

 

History

History
61 lines (38 loc) · 5.22 KB

Readme.md

File metadata and controls

61 lines (38 loc) · 5.22 KB

TwitchVor

Ворует стрим с твича

Как использовать

Для работы требуется создать файл config.json, некоторые поля в нём обязательны.

Цикл работы

TwitchStatuser через опрос api твича и пабсаб следит за статусом стрима. Когда стрим онлайн, StreamsManager запускает StreamHandler, который запускает StreamDownloader, который уже грузит сегменты в хранилище.

Хранилище это либо локальный диск, либо s3 ведро от тайм веб, либо вольюм от do. Третье требует, чтобы вор был запущен на дроплете. Поскольку не локальный диск будет доступен не сразу, сначала идёт загрузку в кеш файл, который перенесётся в хранилище.

После того, как StreamsManager определит, что стрим закончился, будет создан StreamFinisher, который загрузит видео куда нужно. Также он создаёт название для видео и его описание, основываясь на играх и тайтлах стрима. "Куда нужно" это либо локальный диск, либо вк.

При этом, если добавлен ffmpeg, загрузка будет идти не сразу куда нужно, а сначала в ffmpeg, конвертируя .ts формат в .mp4. Ютуб обрабатывал .ts видео по несколько дней, а .mp4 несколько часов. Так что лучше конвертировать, если будет идти загрузка куда-то.

Если нужно, стрим будет поделён на несколько видео по длине/размеру. Например, на ютубе ограничение по длине видео 12 часов.

Если всё загрузится успешно, место "куда нужно" будет удалено.

Нюансы

По умолчанию вор будет ждать ещё час переподруб стрима. Команда finish завершает ожидание. (Вводить в консоль)

Если во время стрим случится переподруб со сменой качества, итогое видео будет поделено на до и после. Потому что при конвертации происходит смена контейнера, а не содержимого, так что вместе 30 и 60 фпс лучше не мешать.

Загрузка стрима можно идти либо анонимно, либо от имени аккаунта. Второе имеет смысл, если есть сабка. Тогда стрим будет качаться без рекламы.

Есть поддержка уведомлений на почту. Будет писать, успешно или нет закончилась загрузка стрима.

1 секунда стрима 1080p60 весит примерно 1МБ. То есть 1 час стрима 3.6ГБ. Для таймвеба по умолчанию создаётся ведро на 100ГБ, чего должно хватит на 27 часов.

Сегменты стрима хранятся либо в одном файле (локально, вольюм), либо каждый в своём файле (S3 ведро). Нарезка на видео происходит уже после стрима. Для этого создаётся база данных в CachedData, которая хранит информацию о сегментах.

Ещё вор считает, сколько стоит его работа. 9 рублей за 6 часов стрима, ага.

Ютуб

Раньше была поддержка выгрузки видева на ютуб. Но я её убрал, потому что переделывал систему загрузки, а на ютубе я уже был забанен (Не связано с загрузкой). Да и вообще, чтобы загружать туда видео, нужно иметь верифицированный апп, что требует прыжков через горящие кольца.

Откуда брать все эти апи ключи, токены и прочее?

Мне лень расписывать, удачи в жизни. Всю эту информацию можно найти.

Что ещё бы...

Вернуть бы аплоадер на ютуб. Добавить бы поддержку вёдер от Digital Ocean. Добавить бы нормальную дозагрузку, если не получилось загрузить. Создавать бы хранилища размером поменьше, расширяя при необходимости. С S3 ведром полегче, с вольюмом посложнее.