Привет, дружи.
Четыре года назад я написал гайд, как в OBS стримить на два канала при помощи собственного nginx-сервера. Кому-то он оказался полезным, кто-то его назначение не понял, но суть не в этом.
Шло время, и информация потихоньку устаревала. Гайд всё ещё рабочий, но мне писали люди, которые хотели пользоваться новой версией nginx, а недавно написал человек, у которого были проблемы со стримом на три канала, и попросил найти решение. Он был в таком отчаянии, что даже предлагал мне деньги!
денег я не взял
Информацию я проверил, и действительно — с тремя каналами начинались проблемы: запускались рандомные два, один раз даже запустились все три, но постоянно лагали и изображение сыпалось. Попробовав разные варианты решения, я пришёл к тому, что проблема из-за старой версии.
Что ж, значит, пришло время обновляться.
Для начала немного оффтопа. Спустя какое-то время после написания того поста до меня дошло, почему на версиях, отличных от 1.5.9.1 ничего не работало — rtmp-модуль для nginx поставляется отдельно, следовательно, его нужно ещё встроить. Никаких проблем, если вы используете *nix — взял nginx, взял rtmp-модуль, скомпилил, и pen pineapple apple pen готово. Другое дело, если вы используете windows — насчёт тонкостей компиляции под эту систему я не в курсе, но они есть, судя по тому, что обновляется nginx с rtmp не часто: актуальная версия nginx под windows на данный момент 1.17.3 (или 1.16.1 стабильная), а актуальная версия nginx с rtmp-модулем — 1.14.1.
Ну, к делу. Весь апдейт сводится к тому, чтобы скачать версию 1.14.1 отсюда (воспользуйтесь зелёной кнопкой Clone or download, и выберите вариант Download ZIP). Затем извлеките файлы из архива на диск C:\, переименуйте папку из nginx-rtmp-win32-dev просто в nginx, или заранее создайте на диске папку nginx, и извлекайте файлы в архиве уже из папки, а ещё можете прямо в архиве переименовать папку в nginx, КОРОЧЕ, сами разберётесь, как удобнее, главное, чтобы в итоге на диске C:\ у вас оказалась папка nginx, в которой будут лежать файлы.
Вот так
Далее следуйте старому гайду:
идёте по пути C:\nginx\conf, где создаёте файл nginx.conf, и туда помещаете этот код (пришлось сделать ссылкой на pastebin, так как у стопгейма нет возможности нормально вставить код).
Здесь нужно вместо STREAMKEY подставить свой ключ трансляции. Далее, по желанию, меняете, удаляете, добавляете ссылки, в зависимости от того, сколько и какие каналы нужны. Единственное, что нужно помнить — ссылка на каждый канал пишется отдельной строкой, начинается с push, а заканчивается точкой с запятой (в общем, смотрите, как сделано сейчас, и повторяйте синтаксис).
Например
Все ссылки на rtmp-сервера нужных площадок найдёте где-то в настройках этих самых площадок. Ключ потока всегда ставится в конце rtmp-ссылки через слэш (вот эта херня — /).
После этого открываете OBS, в настройках вещания ставите custom (он же «настраиваемый»), и сервер rtmp://localhost/live.
Перед тем, как начинать трансляцию в OBS, либо запустите этот батник, либо откройте консоль, и напишите там cd C:\nginx (жамкнуть Enter), nginx.exe (жамкнуть Enter).
Бонус — теперь заканчивать работу nginx можно не через диспетчер задач, а при помощи батника stop в папке nginx (хотя и раньше можно было, ну да ладно).
Лично всё тестил на новейшей Windows 10 (а то знаете, как сейчас бывает — на 1809 работает, а на 1903 уже нет) несколько часов, качество отличное, задержка огромная (ну ладно, не огромная, секунд 9, но я разбалован миксером с его FTL), ни единого разрыва.
На этом закругляюсь, спасибо за внимание.
Лучшие комментарии
Для OBS уже есть плагин
Multiple RTMP outputs plugin
Плюс, в расширенных настройках вывода уже давно можно, через вкладку записи, выводить через FFmpeg, rtmp-ссылкой.
Да и всякие онлайн-сервисы есть, такие как: Restream/All4Stream/Looch и другие.
Вряд ли для вас это актуально, но я напишу для тех, кто наткнется на эту статью.
После каждого push указываем параметр name
push rtmp://ovsu.mycdn.me/input/-206362236_123
name=camera_1;
push rtmp://ovsu.mycdn.me/input/-123758755_456
name=camera_2;
Этот параметр вставляем в разные обс, в ключ потока, т.е запустили ОБС ставим
Сервер:rtmp://localhost/live
Ключ потока: camera_1
Запустили второй ОБС ставим
Сервер:rtmp://localhost/live
Ключ потока: camera_2
и т.д. Естественно нужно будет сделать stop/start батниками, которые указаны в этой теме.
И автору большое спасибо, данный гайд мне очень помог, когда только начинал ковырять эту тему.
А как вообще стриминговые сервисы не палят, что сразу на нескольких аккаунтах идут трансляции с одного ПК? OBS разве не передаёт никакие параметры железа сервису?
Всё робит. 10 хакерменов из 10