{"id":1792,"date":"2022-04-09T08:55:14","date_gmt":"2022-04-09T06:55:14","guid":{"rendered":"https:\/\/www.memoiresecondaire.fr\/?p=1792"},"modified":"2022-04-09T08:55:14","modified_gmt":"2022-04-09T06:55:14","slug":"diffuser-un-flux-video-avec-obs-vers-un-serveur-rtmp-prive-pour-diffusion-sur-une-tv-connectee","status":"publish","type":"post","link":"https:\/\/www.memoiresecondaire.fr\/?p=1792","title":{"rendered":"Diffuser un flux vid\u00e9o avec OBS vers un serveur RTMP priv\u00e9 pour diffusion sur une TV connect\u00e9e"},"content":{"rendered":"\n<p><em>Je regarde tr\u00e8s peu la t\u00e9l\u00e9vision, pr\u00e9f\u00e9rant de loin utiliser les services de streaming comme Netflix ou parfois Amazon Prime, ainsi que quelques vid\u00e9os de vacances. Lorsque je regarde une \u00e9mission, j&rsquo;utilise Molotov qui, dans sa version gratuite, ne permet pas de regarder TF1 ou M6. Ce qui n&rsquo;est pas un mal de toute fa\u00e7on. Mais hier je voulais regarder une \u00e9mission sur TF1. Je souhaitais la regarder sur mon grand \u00e9cran alors je me suis servi de ce pr\u00e9texte pour monter l&rsquo;infrastructure que je m&rsquo;appr\u00eate \u00e0 d\u00e9crire. <\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Setup initial<\/h1>\n\n\n\n<p>Mon installation initiale comprend les \u00e9l\u00e9ments suivants. <br>Il est possible de mutualiser certaines fonctions. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hardware<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Une TV connect\u00e9e poss\u00e9dant l&rsquo;application VLC (ou tout autre appli permettant de lire un flux r\u00e9seau RTMP). J&rsquo;utilise une <a href=\"https:\/\/www.nvidia.com\/fr-fr\/shield\/\" data-type=\"URL\" data-id=\"https:\/\/www.nvidia.com\/fr-fr\/shield\/\">Nvidia Shield<\/a> (un boitier Android TV). <\/li><li>Un PC sous Windows pour r\u00e9cup\u00e9rer le flux de TF1 via <a href=\"https:\/\/captvty.fr\/\" data-type=\"URL\" data-id=\"https:\/\/captvty.fr\/\">Captvty<\/a>.<\/li><li>Un serveur Linux (mon <a href=\"https:\/\/www.amazon.fr\/Quieter2-Computer-Unterst%C3%BCtzung-Dual-Screen-Ethernet\/dp\/B08ZXXJL6N\" data-type=\"URL\" data-id=\"https:\/\/www.amazon.fr\/Quieter2-Computer-Unterst%C3%BCtzung-Dual-Screen-Ethernet\/dp\/B08ZXXJL6N\">miniPc Mele Quieter<\/a> qui me sert \u00e0 tout).<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Software<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/captvty.fr\/\" data-type=\"URL\" data-id=\"https:\/\/captvty.fr\/\">Captvty<\/a><\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image.png\"><img loading=\"lazy\" decoding=\"async\" width=\"699\" height=\"150\" src=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image.png\" alt=\"\" class=\"wp-image-1793\" srcset=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image.png 699w, https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-300x64.png 300w\" sizes=\"auto, (max-width: 699px) 100vw, 699px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>C&rsquo;est un logiciel, uniquement sous Windows m\u00eame si certains hacks permettent de le lancer sous d&rsquo;autres syst\u00e8mes, qui permet de lister l&rsquo;int\u00e9gralit\u00e9 des \u00e9missions accessibles en replay sur la plupart des cha\u00eenes fran\u00e7aises. <\/p>\n\n\n\n<p>Il permet aussi, en faisant un clic droit sur le nom d&rsquo;une cha\u00eene, de la regarder en direct. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"718\" height=\"438\" src=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-2.png\" alt=\"\" class=\"wp-image-1795\" srcset=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-2.png 718w, https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-2-300x183.png 300w\" sizes=\"auto, (max-width: 718px) 100vw, 718px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Captvty me servira ici de source de flux vid\u00e9o, mais on pourrait utiliser n&rsquo;importe quoi.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/obsproject.com\/fr\" data-type=\"URL\" data-id=\"https:\/\/obsproject.com\/fr\">OBS<\/a><\/h3>\n\n\n\n<p>C&rsquo;est le logiciel de streaming le plus populaire actuellement. C&rsquo;est une sorte de banc de montage qui permet de pr\u00e9parer des sc\u00e8nes \u00e0 diffuser par exemple sur Twitch.tv ou Youtube. On peut r\u00e9cup\u00e9rer des flux vid\u00e9os, des images fixes, des overlays, mixer l&rsquo;ensemble, ajouter des filtres, bref, c&rsquo;est tr\u00e8s puissant. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"589\" src=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-3-1024x589.png\" alt=\"\" class=\"wp-image-1796\" srcset=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-3-1024x589.png 1024w, https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-3-300x173.png 300w, https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-3-768x442.png 768w, https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-3.png 1390w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/github.com\/arut\/nginx-rtmp-module\" data-type=\"URL\" data-id=\"https:\/\/github.com\/arut\/nginx-rtmp-module\">Nginx-RTMP<\/a><\/h3>\n\n\n\n<p>Nginx est un serveur Linux ultra l\u00e9ger, tr\u00e8s facile \u00e0 installer et \u00e0 configurer, qui peut servir des pages Web, faire reverse proxy et qui dispose dans notre cas d&rsquo;un module RTMP trivial \u00e0 configurer.<\/p>\n\n\n\n<p>Je l&rsquo;ai install\u00e9 sur mon boitier, mais je suppose qu&rsquo;on peut aussi faire une machine virtuelle l\u00e9g\u00e8re (genre un truc sous Alpine), un docker ou m\u00eame passer par le WSL de Windows. Je n&rsquo;ai pas encore test\u00e9 ces solutions.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Mise en place<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Nginx-RTMP<\/h2>\n\n\n\n<p>Personnellement je suis sous Ubuntu, il faut adapter les commandes d&rsquo;installation si vous poss\u00e9dez une autre distribution. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Installation<\/h3>\n\n\n\n<p>Ouvrir un terminal puis : <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><kbd>sudo apt update <\/kbd><\/li><li><kbd>sudo apt install libnginx-mod-rtmp<\/kbd><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Configuration<\/h3>\n\n\n\n<p>Toujours dans le terminal<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><kbd>sudo nano \/etc\/nginx\/nginx.conf<\/kbd><\/li><\/ul>\n\n\n\n<p>Ajouter le bloc suivant \u00e0 la fin du fichier :<\/p>\n\n\n\n<pre id=\"block-bb9a137b-8af6-46a0-b9b2-0bd16998eaec\" class=\"wp-block-code\"><code>rtmp {\n        server {\n                listen 1935;\n                chunk_size 4096;\n\n                application live {\n                        live on;\n                        record off;\n                }\n        }\n}<\/code><\/pre>\n\n\n\n<p>Quitter (CTRL+X) en sauvegardant (Y).<\/p>\n\n\n\n<p>Relancer le serveur<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><kbd>sudo systemctl restart nginx<\/kbd><\/li><\/ul>\n\n\n\n<p>C&rsquo;est vraiment la config minimale, il n&rsquo;y a pas de s\u00e9curit\u00e9, pas de transcodage, le flux est transmis tel quel.<\/p>\n\n\n\n<p>! Attention ! Ayant d\u00e9j\u00e0 un serveur web sur ce boitier, il a fallu que je change les ports d&rsquo;\u00e9coute de nginx pour autre chose que le 80 qui \u00e9tait d\u00e9j\u00e0 pris. Sinon le service refuse de se lancer. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Captvty<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>T\u00e9l\u00e9charger et d\u00e9compresser le logiciel quelque part, par exemple sur le bureau. <\/li><li>Lancer l&rsquo;ex\u00e9cutable captvty.exe<\/li><li>Faire un clic droit sur la cha\u00eene TV puis Visionner &lt;chaine&gt; en direct<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-4.png\"><img loading=\"lazy\" decoding=\"async\" width=\"479\" height=\"156\" src=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-4.png\" alt=\"\" class=\"wp-image-1797\" srcset=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-4.png 479w, https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-4-300x98.png 300w\" sizes=\"auto, (max-width: 479px) 100vw, 479px\" \/><\/a><\/figure>\n\n\n\n<p>Si tout se passe bien, une fen\u00eatre s&rsquo;ouvre et diffuse un flux vid\u00e9o. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">OBS<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">Installation<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>Installer et d\u00e9compresser OBS quelque part, par exemple le bureau<\/li><li>Lancer l&rsquo;ex\u00e9cutable obs64.exe<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Configuration<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>Dans les sources, ajouter Capture d&rsquo;une fen\u00eatre et Audio du bureau<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-5.png\"><img loading=\"lazy\" decoding=\"async\" width=\"495\" height=\"278\" src=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-5.png\" alt=\"\" class=\"wp-image-1798\" srcset=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-5.png 495w, https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-5-300x168.png 300w\" sizes=\"auto, (max-width: 495px) 100vw, 495px\" \/><\/a><\/figure><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li> Dans les param\u00e8tres de la capture de fen\u00eatre, s\u00e9lectionner la fen\u00eatre qui diffuse la cha\u00eene.<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-6.png\"><img loading=\"lazy\" decoding=\"async\" width=\"561\" height=\"142\" src=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-6.png\" alt=\"\" class=\"wp-image-1799\" srcset=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-6.png 561w, https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-6-300x76.png 300w\" sizes=\"auto, (max-width: 561px) 100vw, 561px\" \/><\/a><\/figure><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>Enfin, dans les param\u00e8tres de Flux d&rsquo;OBS, <ul><li>choisir Personnalis\u00e9<\/li><li>Indiquer l&rsquo;adresse du serveur RTMP<\/li><li>Choisir une cl\u00e9 (j&rsquo;ai mis test)<\/li><\/ul><\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-7.png\"><img loading=\"lazy\" decoding=\"async\" width=\"967\" height=\"297\" src=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-7.png\" alt=\"\" class=\"wp-image-1800\" srcset=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-7.png 967w, https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-7-300x92.png 300w, https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/image-7-768x236.png 768w\" sizes=\"auto, (max-width: 967px) 100vw, 967px\" \/><\/a><\/figure><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>Enfin, lancer le stream<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/Stream.png\"><img loading=\"lazy\" decoding=\"async\" width=\"287\" height=\"185\" src=\"https:\/\/www.memoiresecondaire.fr\/wp-content\/uploads\/2022\/04\/Stream.png\" alt=\"\" class=\"wp-image-1802\"\/><\/a><\/figure><\/div>\n\n\n\n<p>Si OBs ne dit rien, c&rsquo;est que le flux est diffus\u00e9.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Reception<\/h1>\n\n\n\n<p>Depuis un ordinateur branch\u00e9 sur le r\u00e9seau, depuis un t\u00e9l\u00e9phone (s&rsquo;il dispose de VLC), ou directement depuis la TV :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Lancer VLC<\/li><li>Ouvrir un flux r\u00e9seau<\/li><li>Indiquer l&rsquo;adresse du serveur RTMP sous la forme<ul><li><kbd>rtmp:\/\/&lt;adresse ip&gt;\/live\/test<\/kbd><\/li><\/ul><\/li><\/ul>\n\n\n\n<p>live, c&rsquo;est le nom du service RTMP (indiqu\u00e9 dans le fichier de configuration Nginx).<br>test, c&rsquo;est la cl\u00e9 de stream indiqu\u00e9e dans OBS.<\/p>\n\n\n\n<p>Si tout s&rsquo;est bien d\u00e9roul\u00e9, vous devriez voir votre flux appara\u00eetre.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Conclusion<\/h1>\n\n\n\n<p>Il y a quelques \u00e9tapes \u00e0 r\u00e9aliser, mais l&rsquo;ensemble n&rsquo;est pas si compliqu\u00e9 \u00e0 mettre en place de mon point de vue. OBS \u00e9tant capable de prendre \u00e0 peu pr\u00e8s n&rsquo;importe quoi en entr\u00e9e, rien n&#8217;emp\u00eache par exemple de diffuser une webcam, un ensemble de cam\u00e9ra de s\u00e9curit\u00e9, des panneaux d&rsquo;affichage ou un diaporama de photos ou de la publicit\u00e9 par exemple. OBS permet de g\u00e9rer des sc\u00e8nes, mais aussi des transitions pour passer joliment d&rsquo;une sc\u00e8ne \u00e0 l&rsquo;autre. Chaque sc\u00e8ne \u00e9tant ind\u00e9pendante, il est possible de produire du contenu diff\u00e9rent pour chacune. <\/p>\n\n\n\n<p>Tout l&rsquo;int\u00e9r\u00eat de ce mini-projet a \u00e9t\u00e9 pour moi de comprendre comment mettre en place le serveur RTMP priv\u00e9, et si on s&rsquo;en tient \u00e0 la base, cela a \u00e9t\u00e9 tr\u00e8s simple. Bien s\u00fbr, pour une utilisation en entreprise, ou dans le public, il faudra ajouter des couches de s\u00e9curit\u00e9, mais cela d\u00e9passe le cadre de cet article. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Je regarde tr\u00e8s peu la t\u00e9l\u00e9vision, pr\u00e9f\u00e9rant de loin utiliser les services de streaming comme Netflix ou parfois Amazon Prime, ainsi que quelques vid\u00e9os de vacances. Lorsque je regarde une \u00e9mission, j&rsquo;utilise Molotov qui, dans sa version gratuite, ne permet pas de regarder TF1 ou M6. Ce qui n&rsquo;est pas un mal de toute fa\u00e7on. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[55],"tags":[],"class_list":["post-1792","post","type-post","status-publish","format-standard","hentry","category-informatique"],"_links":{"self":[{"href":"https:\/\/www.memoiresecondaire.fr\/index.php?rest_route=\/wp\/v2\/posts\/1792","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.memoiresecondaire.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.memoiresecondaire.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.memoiresecondaire.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.memoiresecondaire.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1792"}],"version-history":[{"count":1,"href":"https:\/\/www.memoiresecondaire.fr\/index.php?rest_route=\/wp\/v2\/posts\/1792\/revisions"}],"predecessor-version":[{"id":1804,"href":"https:\/\/www.memoiresecondaire.fr\/index.php?rest_route=\/wp\/v2\/posts\/1792\/revisions\/1804"}],"wp:attachment":[{"href":"https:\/\/www.memoiresecondaire.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1792"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.memoiresecondaire.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1792"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.memoiresecondaire.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1792"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}