Hello
Aujourd'hui c'est: partage de mon expérience (plutôt récente) sur les Live IRL (In Real Life) sur Twitch.
On m'a déjà demandé plusieurs fois qu'elle était ma configuration pour faire mes Live IRL Twitch, comme par exemple les streamers Twitch @itharagaian ou destropp, je me suis donc dit que ce serait bien de faire un tutoriel et retour d'expérience sur le sujet 😉
Je vous préviens tout de suite, je n'ai absolument rien inventé, ayant suivi les excellentes vidéos youtube sur le sujet du Twitcheur Croate sprEEEzy
Today it's: sharing my (rather recent) experience on Live IRL (In Real Life) on Twitch.
I've already been asked several times what my setup is, for doing my travel & outdoor IRL stream on Twitch, so I thought it would be nice to do a tutorial and feedback on the subject 😉
I warn you right away, I didn't create anything! My setup simply reflects the excellent advice of the Croatian Twitcher sprEEEzy through its series of videos on Youtube on the subject. Then for my English reader who will be interested, I suggest you follow his videos and I will continue my post only in French.
Prerequis
Pour mettre en place cette solution peu honéreuse mais de qualité vous aurez besoin de:
1 connexion 4G ou 5G suffisante pour pouvoir uploader 1500kbps par secondes. Pour vous donner une idée un stream de 5 heures va utiliser 7Go de votre forfait (1.4Go par heure de stream)
1 smartphone avec une bonne qualité photo/video
1 PC/Mac/Linux à la maison (pas besoin d'un foudre de guerre)
Le Concept
Le concept de cette configuration est d'utiliser votre smartphone pour envoyer directement un flux vidéo compressé en HEVC (H265) via le protocol Open Source SRT (plus optimisé pour le stream IRL que le protocol RTMP) sur votre PC/Mac/Linux à la maison qui se chargera via OBS de le décoder et le renvoyer à Twitch.
Nous mettrons en place aussi un logiciel surveillant la qualité de la réception du stream sur le PC/Mac/Linux grace au websocket d'OBS qui basculera automatiquement sur une scène OBS spécifique en cas de coupure de flux ou de mauvaise qualité de bande passante.
Pourquoi HEVC (H265) et pas H264 ?
Tout simplement pour le gros gain en poids de la compression HEVC (H265) allant de 25% à 50%
Tableau de comparaison
Resolution | H.264 | H.265 |
---|---|---|
480p | 1.5 mbps | 0.75 mbps |
720p | 3 mbps | 1.5 mbps |
1080p | 6 mbps | 3 mbps |
4K | 32 mbps | 15 mbps |
Pourquoi SRT et pas RTMP ?
SRT qui est un protocol Open Source et sécurisé (128/256 bit AES encryption) a l'avantage sur la faible latence (délai entre le moment d'envoi du flux et sa réception) rendu possible du fait qu'il est beaucoup plus rapide pour transférer les données et dispose aussi d'une meilleure gestion d'erreur.
Le Smartphone
Avoir un smartphone avec une bonne optique (notamment pour le soir en basse lumière) voir une stabilisation est un plus. Vous pouvez aussi opter en option pour un stabilisateur 3 axes pour donner plus de confort à vos viewers comme le DJI OM 4 SE, ici en Thailande il est actuellement à 85 euros car DJI sort le nouveau modèle 5 SE (140 euros grosse différence hein!)
Dessus il vous faut installer:
- L'application gratuite Larix Broadcaster disponible sur l'Apple Store et le Google Play
Deuxième smartphone
Si vous décidez d'utiliser un second smartphone pour controler et piloter votre stream comme c'est le cas pour moi je vous conseil d'y installer:
l'application IRL Chat (que sur Android) qui vous permet de rajouter tout un tas de lien api twitch (evenements, follow...) en plus du tchat dont vous pouvez d'ailleurs définir la taille de police (bien pratique en plein soleil ou pour les bigleux comme moi)
Un lien vers l'url d'OBS Remote Tablet qui est Open Source (lien github) et vous permettra de démarrer/arrêter le Stream et/ou l'enregistrement ainsi que de changer de scène manuellement
Le PC/Mac/Linux
Sur votre PC/Mac/Linux à la maison, en plus d'avoir OBS Studio d'installé il vous faut aussi installer:
OBS WebSocket
Qui permet de controler OBS par websocket (que du bonheur pour les dev)
type: Open Source
Lien: https://github.com/obsproject/obs-websocket/releases/tag/4.9.1
Node.js
Le moteur d’exécution JavaScript V8 capable d'exécuter le code JavaScript en dehors d'un navigateur Web.
type: Open Source
Lien: https://nodejs.org/en/download/
SRT Stats Monitor
Un programme d'aide au streaming IRL pour les sites de streaming tels que Twitch, utilisant OBS Studio.
type: Open Source
lien: https://github.com/loopy750/SRT-Stats-Monitor
Configuration
Maintenant que nous avons installé tout ce dont nous avions besoin nous pouvons maintenant procéder à la Configuration.
Système & Réseau
Commençons par le plus compliqué comme cela ce sera fait 😉
Firewall
Vous devez authoriser l'accès aux ports udp 4444 et 8081 dans votre firewall pour que depuis l'extérieur l'on puisse accèder à OBS (websocket et SRT).
Configuration NAT (Network Address Translation)
Vous devez configurer la redirection de ports udp 4444 et 8081 sur votre box internet, configuration NAT (Network Address Translation), pour rediriger les arrivées sur ces port vers votre PC/Mac/Linux.
DNS
Vu que probablement l'adresse IP de votre box internet change régulièrement il vous faut passer par un service de gestion de DNS pour adresse IP dynamique comme Duck DNS (gratuit), no-ip (gratuit), DynDns (payant) ou autre au choix.
OBS
Serveur Websocket
Allez dans le menu Tools puis choisissez WebSockets Server Setting
Spécifiez un mot de passe super secret pour votre serveur websocket
Scène LIVE
Créé une nouvelle scène que nous allons appeler live, dans celle-ci, dans source, ajoutez un media source.
Décochez local File et restart playback when source becomes active puis dans input mettez:
srt://[votre adresse ip local ex: 192.168.1.2]:8081?mode=listener&passphrase=[un autre super mot de passe]&connect_timeout=3000&latency=2000000&listen_timeout=5000000&smoother=live&transtype=live&timeout=5000000
remarque: votre PC/Mac/Linux doit avoir une adresse IP fixe sur le réseau local
Mettez le reconnect delay à 1 S
Vous pouvez maintenant rajouter à votre scène les overlays que vous voulez.
Scène LOW BITRATE
Pour que SRT Stats Monitor fonctionne correctement et bascule votre scène en cas de low bitrate, celle-ci doit impérativement s'appeler comme votre scène de live suivi d'un espace puis LBR
.
Il vous faut donc créer une nouvelle scène que l'on va nommer live LBR dans notre cas.
Dedans mettez y ce que vous voulez, pour ma part j'y ai mis une vidéo en boucle + quelques infos tel que le tchat, info de mauvaise connexion ...
Scène NO BANDWITH
Pour la scène en cas de perte total de connexion c'est le même principe, la seule différence est que vous pouvez l'appeler comme vous le désirez.
Scènes supplémentaires
Vous pouvez aussi créer une scène supplémentaire pour l'intro ainsi que tout autres scènes que vous voudriez utiliser manuellement via le OBS Remote Tablet
SRT Stats Monitor
Il est maintenant temps de nous occuper de l'appli SRT Stats Monitor. Les fichiers de configuration se trouvent dans Documents\Loopy SRT Monitor
sous Windows, vous y trouverez aussi un readme.txt
expliquant les options.
Editez le fichier config.ini
qui s'y trouve et mettez les valeurs comme suis:
[config]
StreamFailDelay=5
xWindowPosition=480
yWindowPosition=320
SceneOK=live
SceneFail=[nom de Scène NO BANDWITH]
SceneIntro=live
SceneBypass=none
MediaSource1=SRTmain
MediaSource2=SRTmain
WebSocketAddress=127.0.0.1:4444
WebSocketPassword=[mot de passe super secret]
ConnectionsLog=true
FileStatusOutput=false
SceneLBREnabled=true
Scene2LBRDisabled=false
NodejsFileSystem=2
CheckUpdateOnStartup=false
[multi-camera-switch]
MultiCameraSwitch=false
TitleScene1=Main
TitleScene2=Main 2
TitleScene12=Main 1+2
ReturnPreviousScene=false
ReturnPreviousSceneRemember=false
Pour ma part j'ai choisi l'option 2
pour NodejsFileSystem m'obligeant a fermer la fenetre de commande manuellement (rien ne vous empêche d'essayer la valeur 1
)
N'hésitez pas à vous référer au fichier readme.txt
si vous voulez changer des valeurs.
Larix Broadcaster
Il est maintenant temps de nous occuper de notre smartphone en configurant Larix Broadcaster.
Lancez l'App puis allez dans Settings
Puis Connections
Et enfin New Connection. Dans Name mettez LIVE ou le nom que vous voulez et dans URL:
srt://[votre nom de domaine dynamique]:8081
Pour le reste c'est:
- Mode: Audio + Video
- SRT sender mode: Caller
- Latency: 4 x le RTT
Le RTT etant le temps que met un ping entre votre smartphone à faire l'aller/retour avec votre PC/Mac/Linux à la maison. Dans mon cas l'allez/retour prends 160ms j'ai donc mis ma Latency a 640 - passphrase: [un autre super mot de passe]
- pbkeylen: 16
- streamid:
- Retransmission algorithm: reduced
- maxbw:
Et enfin validez. Maintenant que notre connexion est créé passons à la suite de la configuration, dans Settings choisissez Video puis mettez les parametres suivants:
Start app with: Rear Camera
Resolution: 1280x720
Mes viewers n'ayant jamais le choix de résolution de mon stream je suis partie sur cette résolution pour ne lèser personne.FPS: 30 fixed rate
Orientation: Landscape
Live rotation: désactivé
Keep streaming when not in focus: [depends de vous]
Si vous utilisez un seul smartphone (pour streamer et gérer votre stream) cela vous permet de réduire Larix Broadcaster et lancer d'autres app sans couper le stream (tourne en arriere plan)Focus Mode: Continuous auto focus
White balance: Auto
Anti-flicker: off
Exposure compensation: 0
Bitrate matches resolution: désactivé
Bitrate: 1500 Kbps
Si vous passez en 1080p montez à 2250, après à vous de faire vos tests car je pense que la qualité varie selon les smartphonesBitrate mode: hybrid
Keyframe frequency: 2 sec
Format: HEVC
HEVC profile: Main
Il se peut que vous ayez des options supplémentaires ou légèrement différentes (cela semble varier d'un appareil à un aute)
C'est pareil, ne prenez pas pour argent comptant mes valeurs, je n'ai pas encore essayé toute les valeurs possible et ce qui me conviens ne vous conviendra peut être pas donc n'hésitez pas à faire pas mal de test.
Debuggage
Tout est maintenant prêt, lancez OBS, SRT Stats Monitor et Larix Broadcaster. Lancer le flux dans Larix Broadcaster et l'image devrait apparaitre dans votre scène live sur OBS
Si tel n'est pas le cas procédez comme suit:
Connectez votre smartphone à votre réseau wifi, dans Larix Broadcaster éditer la connexion et remplacez [votre nom de domaine dynamique]
dans srt://[votre nom de domaine dynamique]:8081 par l'adresse IP local de votre PC/Mac/Linux et réessayez.
Cas 1: cela ne fonctionne pas! Avez vous bien ajouté la règle sur le firewall de votre PC/Mac/Linux? Oui? Ok alors vous avez une erreur dans la config, essayez sans le passphrase (à retirer a la fois dans OBS et dans Larix Broadcaster) au cas ou vous auriez fait une erreur sur le mot de passe. Cela ne fonctionne toujours pas? Vous pouvez tout reprendre depuis le début
Cas 2: cela fonctionne sur le réseau local! Dans ce cas soit vous avez mal fait la redirection de port (NAT) sur votre box internet soit vous avez une erreur avec votre service DNS dynamique
Si vous avez des remaques ou des questions n'hésitez pas à laisser un commentaire
@mintrawa :)
Vote for my HIVE block producer account (witness): click here (via HiveSigner)