16 августа 2019 16.08.19 10 11K

Обновлённый гайд, как стримить в OBS на два и более канала

+20

Привет, дружи.

Четыре года назад я написал гайд, как в 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 и другие.
Постоянно обрыв соединения с сервером
Мне откровенно лень проверять, но можешь закинуть куда-нибудь лог ошибок из папки C:\nginx\logs, попырю.
всё сделала по вашим инструкцыям, а в настройках ОБС вещание указывать что?..
После этого открываете OBS, в настройках вещания ставите custom (он же «настраиваемый»), и сервер rtmp://localhost/live.
Владимир приветствую, большое спасибо вам за подробную статью, очень помогла. Но есть один дополнительный вопрос. Можно ли запустить 2 rtmp сервера на одной машине? Т.е. я настроил по вашей схеме и теперь один ОБС у меня раздаёт сразу на 3 канала. А задача стоит запустить ещё один ОБС, который будет стримить уже другой контент на уже другие 3 канала, но параллельно с первым ОБС. Может можно прописать в nginx.conf чтобы запускалось два сервера, или создать ещё одну папку, типа nginx2 подобную первой но только настроить как-то чтобы сервер был на другом IP а не на localhost?

Вряд ли для вас это актуально, но я напишу для тех, кто наткнется на эту статью. 

После каждого 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 разве не передаёт никакие параметры железа сервису?

Читай также