Как мы ведем круглосуточную трансляцию на Twitch и YouTube

Путеводитель по:

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

Основной ответ

Мы используем плейлисты FFmpeg на Digital Ocean droplet. Если это не то, что вы хотите использовать, вы можете выйти сейчас.


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

1. Настройка дроплета

Мы используем Digital Ocean для создания нашего удалённого сервера, но вы можете настроить то же самое на любой другой платформе, которая предоставляет возможности командной строки для запуска скриптов и установки приложений, а также включает достаточный ежемесячный объём передачи данных для круглосуточной трансляции.

Вот характеристики:

Я смог использовать самый базовый Droplet с 512 МБ ОЗУ и 10 ГБ диска, и я подключил к нему накопитель Volume Storage для видео.

2. Загрузите видео

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

Всё основано на слугах и последовательности. Наши серии имеют слуг (christianity-for-beginners), затем у каждого урока есть слуг с порядковым номером элемента перед ним.

Вот как наши данные хранятся в нашей базе данных и будут использоваться при создании плейлистов и отслеживании нашего положения в порядке видео.

3. Добавьте FFmpeg

Откройте командную строку и проверьте, установлен ли у вас ffmpeg:

 ffmpeg -version

Если нет, выполните следующий код для установок Ubuntu:

 sudo apt update
 sudo apt install ffmpeg

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

4. Составьте плейлист

FFmpeg может воспроизводить список видео на основе плейлиста. Давайте создадим его. Я называю файл в нашей системе assets.txt, и он находится в корневой папке. Он очень простой и выглядит примерно так:

Наш полный плейлист содержит более 370 видео! Посмотрите его.

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

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

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

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

5. Создание сценария

Теперь мы создадим bash-скрипт для запуска из Cronjob. Вот схема нашего скрипта.

Просмотреть сценарий в виде текстового файла: rerun.txt

Обязательно обновите {YOUR_STREAM_KEY} на ваш реальный ключ. Также вы можете обновить конечную точку Twitch, чтобы она была ближе к расположению ваших серверов. Просмотреть конечные точки Twitch.

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

6. Запуск сценария

Чтобы запустить скрипт, мы настроим cron-задачу для этого. Вот полезное руководство по Cronjobs, если вы с ними не знакомы.

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

 * * * * * ./rerun.sh

Закрытие

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

Свяжитесь со мной в X с вашими вопросами или проблемами, и я обновлю это руководство по мере поступления новых сценариев.

Примечание: Стенограмма этого урока была сделана в электронном виде и еще не вычитана.