W poradniku tym zakładam, że korzystamy z Windowsa 10. Nie jest to poradnik krok po kroku, jest trochę chaotyczny, pomyślałem, że po prostu zamiast pisać notatki dla siebie, wrzucę to na forum :slight_smile: Korzystanie z tych informacji niżej wymaga pewnej znajomości OBS oraz w miarę dobrego uploadu naszego łącza.
Serwer RTMP
Ściągamy nasz własny serwer który obsługuje protokół RTMP: http://sourceforge.net/projects/monaserver/files/MonaServer_Win32.zip/download Rozpakowujemy .zip i odpalamy plik .exe
Linux
W przypadku jeśli chcielibyśmy uruchomić ten serwer na VPS z Linuxem, sądzę że wystarczy np. kontener z nginx-rtmp
typu https://hub.docker.com/r/alfg/nginx-rtmp/
OBS
Włączamy Ustawienia OBS w górnym pasku poprzez Tools -> Settings.
Wybieramy zakładkę Stream.
Z listy "Service" wybieramy "Custom...".
Wpisujemy tam rtmp://localhost:1935/live
.
Dla pola Stream key wpisujemy stream
Te ustawienia spowodują, że nasz stream zamiast być wysyłany do YT, Twitch czy innej platformy, najpierw trafi do innej aplikacji w naszym komputerze (czy też na VPSie). Od tego naszego serwera będą mogły odbierać też inne aplikacje, czyli tworzymy sobie trochę jakby rozgałęziacz czyli więcej gniazdek do stream'a :slight_smile:
Na tym etapie, zakładając, że nasze ustawienia jakości wideo są okej to możemy już odpalać streamowanie w OBS ale nie trafi jeszcze ono na platformy.
Scoop
Sugeruję instalację prostego menadżera paczek dla Windows a potem instalację ffmpeg przy jego pomocy https://scoop.sh/ Na stronie projektu jest instrukcja jak go zainstalować. Gdy już go mamy, instalujemy ffmpega w ten sposób:
scoop install ffmpeg
Z pewnością przyda nam się też później do wielu innych aplikacji 😃
FFmpeg
To narzędzie jest prawdziwym kombajnem do multimediów. W tym wypadku użyjemy go aby odebrać stream z lokalnego serwera RTMP, ewentualnie zmienić jakość w locie a następnie wypchnąć na platformę streamingową.
Podaję przykład skryptu którego sam użyłem:
ffmpeg -hide_banner -i rtmp://localhost:1935/live/stream
-c:v copy -c:a copy -f flv rtmp://a.rtmp.youtube.com/live2/xxx-xxxx-xxxx-xxxx-xxxx
-c:v nvenc_h264 -b:v 6000k -preset slow -vf "scale=1280:720" -c:a copy -max_muxing_queue_size 1024 -f flv rtmp://live-waw.twitch.tv/app/live_XXXXXXXX?bandwidthtest=true
W tym wypadku w OBS mam ustawiony video bitrate 12000 Kbps
, z enkodowaniem NVENC i audio bitrate 160 w trybie "Simple" więc bez żadnych ustawień zaawansowanych.
Założenie jest takie aby tą oryginalną jakość ustawioną w OBS wrzucać na YT który daje z tym radę oraz reenkodować w locie zmieniając rozdzielczość na 720p z innym bitrate, również na GPU, wideo do Twitcha który dla zwykłych kont bez partnerstwa ma dość ograniczone opcje jakości.
O ile mi wiadomo przy przekroczeniu bitrate 6000 Kbps znika opcja z oryginalną jakością lub nakłada się spore opóźnienie, przyznam, że jeszcze nie zweryfikowałem tego w pełni, byłbym wdzięczny za wasze komentarze na ten temat :slight_smile:
Chcąc odpalić tą komendę należy:
- usunąć nowe linie, dałem je dla czytelności (1 linia jako wejście oraz 2 i 3 linia jako wyjścia)
- podmienić klucze streamu na takie wyświetlane w serwisie
- usunąć
?bandwidthtest=true
z końcówki URLa dla Twitch, ten URL daje możliwość testów bez publicznego transmitowania dla widzów czy też wysyłania im powiadomień - upewnić się, że odpowiada nam ustawienie enkodowania, tutaj wybrałem akurat enkodowanie na GPU od Nvidia, znacznie odciąża to procesor i nie powinno wpływać na grę, GPU ma osobne moduły do grafiki 3D oraz enkodowania wideo w locie
W oryginalnym poradniku który podlinkowałem niżej jest jeszcze jeden schemat działania. Można ograniczyć spadek jakości dla twitcha poprzez streamowanie bitrate np. 100Mbit do serwera RTMP a następnie enkodowanie oryginalnego wideo do obu platform.
Przydatne linki
https://support.google.com/youtube/answer/2853702?hl=en
https://stream.twitch.tv/encoding/
https://stream.twitch.tv/ingests/
Źródło
Przy przygotowaniu tego mini poradnika skorzystałem z tego oryginalnego posta na forum OBS: https://obsproject.com/forum/resources/obs-studio-stream-to-multiple-platforms-or-channels-at-once.932/