F5UII – Station radioamateur française

DATV : Comment encoder en h.265 avec un encodeur externe HDMI

Intro

Dans mon dernier article consacré à la télévision numérique d’amateur, j’ai eu l’occasion de présenter pas-à-pas comment réaliser ses premières émissions d’images en DATV. Dans ce nouvel article, je propose de nous focaliser sur la mise en oeuvre d’un petit boitier, un encodeur vidéo H.265/H.264. Il offre la possibilité à ceux qui sont équipé d’ordinateur dépourvu de carte graphique “moderne” incapable d’encoder en H.265 de pouvoir tout de même transmettre avec cette “compression” H265.

Dans cet article, et comme d’habitude, nous allons dérouler étape par étape toutes les opérations décrites de façon les plus précises possibles. Cet article est “multipages”, à parcourir d’une page à l’autre ou directement depuis le sommaire à la page souhaitée.

Dans l’article précédent, j’ai eu l’occasion d’expliquer de rappeler que le débit numérique transmis à l’émetteur est dépendant des caractéristiques du signal radio que l’on va émettre : Principalement sa largeur spectrale (ou le nombre de kilo symbole) et du facteur de correction (FEC). Si cela ne vous dis pas grand chose, je vous invite à (re)lire cet article pour clarifier ces notions importantes en DATV.

L’encodage H.265 (ou MPEG-4 HEVC pour High Efficiency Video Coding) est un processus d’encodage et compression de l’image vidéo beaucoup plus performant que la version H.264. Grâce à son algorithme qui permet d’augmenter les zones statiques dans l’image et de “resserrer” le maillage de compression, l’encodeur H.265 est capable de faire économiser jusqu’à 70 à 80 % de bande passante pour une qualité identique à l’encodage H.264

Sur l’image ci dessus, on constate qu’il y a globalement moins de carrés sur l’image de droite, encodée en H.265 que sur l’image de gauche. C’est cette économie de zones uniformes qui fait gagner en débit de données utiles à la transmission d’une image. A l’opposé, si l’on considère que l’on veut exploiter la totalité du débit disponible, nous allons alors pouvoir gagner en qualité d’image, en évitant les flous lors de mouvement rapide d’image, ou alors pouvoir augmenter la définition de la vidéo envoyée.

A contrario, l’encodage H.265 est disponible que sur certaines cartes graphiques récentes. Les cartes Nvidia de troisième génération intègre pour certaines un encodeur NVENC H.265 (NVIDIA’s encoder). Référez-vous à la liste du constructeur de GPU pour savoir si là votre intègre cette technologie d’encodage H.265. Pour ceux qui en sont dépourvu, il existe sur le marché des boîtiers qui réalise l’encodage d’une entrée vidéo, vers une “sortie” réseau Ethernet.

Ils existent plusieurs modèles sur le marché. Nous allons nous attarder sur un modèle dont la diffusion est grand public et dont le prix reste correcte : ON-DMI-16D (1080P@50fps)  ou ON-DM1-16A (1080p@60fps). Voici les caractéristiques du constructeur.

H.265/H.264 HDMI Video Encoder

Basic Information    Username:admin;  Password:12345; IP:192.168.1.120
Model   ON-DMI-16D   or    ON-DMI-16A
Chipset   Hi3516D (1080p@50fps) or Hi3516A (1080p@60fps)
Video/Audio
Compression
Video Encoding   H.265/H.264 Encoding
Audio   AAC, G.711U, G.711A;  Sample: 48000kHz;G.711U/A for NVR
Audio sampling   32K, 48K, 64K, 128K or 8000HZ(for NVR)
Bitrate   CBR/VBR; 64kbps-12Mbps(adjustable)
Frame rate   1-30fps (adjustable)
Bitrate   Main Stream:1920*1080, 1600*900, 1440*1050, 1280*1024, 1280*800, 1280*720;
Sub Stream:1280*720;800*600, 720*576, 640*480, 640*352, 352*288, 320*240
Video Stream UDP   udp://@224.1.2.3:10000
TS stream   http://192.168.1.120:80/ts/0(main stream)
http://192.168.1.120:80/ts/1(sub stream)
RTSP   rtsp://192.168.1.120:554/live/0(main stream)
rtsp://192.168.1.120:554/live/1(sub stream)
Network
Protocols
Protocols   TCP/IP, UDP, RTSP, ONVIF, HTTP, DNS, RTMP, TS stream, DHCP
WI-FI Protocols   Support 802.11b/g/n, WEP, WPA, WPA2 Encrypted Protocol
Private Protocols   Hikvision and DaHua Private Protocols
Interfaces Network Port   RJ45 10M / 100M Adaptive Ethernet Interface
HDMI   1CH HDMI Input
Reset   Support
Others Operating Environment   Temperature: -10℃~+55℃; Humidity: <95%
Server   Support Baidu Cloud, Youtube, Wowza and other streaming media servers
NVR Compatibility   Support H.265 NVR from Hikvision and DaHua【Audio:G.711U】
CMS Client   Support Hikvision (iVMS-4200/8700) and DaHua (SmartPSS)
Power Supply   DC 12V/1A
Consumption   ≤3W
Dimension   115(L) * 70(W) * 33(H)mm

Voici le manuel (en anglais) de l’encodeur à télécharger : H.265 HDMI Video Encoder Quick Start Guide_ERV1.2.pdf

Le boitier est à considérer comme un écran ou un vidéoprojecteur qui serait connecté à votre ordinateur. Sauf que dans notre cas, l’encodeur n’affiche pas d’image mais encode la vidéo et l’audio pour l’envoyer par réseau vers un récepteur/diffuseur, récepteur qui dans notre cas est l’Adalm Pluto avec le firmware PlutoDVB. L’encodeur H.264/H.265 possède un connecteur HDMI par lequel nous allons envoyer la vidéo et l’audio. Il est conseillé d’utiliser le cable RJ45 pour connecter le boitier au réseau plutôt au réseau wifi, qui est plus sujet à perturbation.

Il est donc également entendu que vous ayez également connecter votre Adalm Pluto sur réseau Ethernet (voir mon article précédent pour réaliser cette opération)

Où acheter cet encodeur H.265 ?

Vous trouvez cet encodeur chez différents revendeurs, en règle général expédié depuis la Chine.

Vérifier le type de prise du bloc d’alimentation, utiliser le cas échéant un adaptateur US.

Branchons l’encodeur

Nous avons besoin de brancher l’entrée vidéo de l’encodeur qui est en HDMI à votre ordinateur. Personnellement j’utilise un PC portable qui dispose d’un port HDMI et également d’une sortie vidéo VGA. Pour plus de confort, je raccorde un second écran à mon ordinateur au port VGA de l’ordinateur.

Ensuite, raccorder par une bretelle RJ45 votre encodeur sur votre réseau, à votre switch ou routeur, sur lequel est également branché votre Adalm Pluto (la mise en oeuvre du PlutoSDR sur réseau est détaillé ici). Alimenter votre encodeur à l’aide de son bloc d’alimentation secteur 12V/2A fourni.

Après quelques instants, le système d’exploitation détecte d’une part un nouvel écran/moniteur, et d’autre part, une nouveau canal audio.

  1. Si comme moi, vous avez deux écrans, dans un premier temps, organisons les écrans disponibles pour correspondre à leurs positions physiques. Faites un clic droit sur le bureau et choisir Paramétrages d’affichage.

  2. Cliquer sur Identifier pour constater que vos écrans sont bien positionnés. Le cas échéant, par glisser/déposer, déplacer l’un ou l’autre des écrans. Dans mon cas, l’écran 2 est l’écran VGA, l’écran 1 est l’écran principal du PC portable, et l’écran 3 correspond à l’encodeur H265.

  3. Vérifions à présent la présence du nouveau canal de diffusion audio correspondant au boitier encodeur. Faire un clic droit, sur le haut-parleur de la barre des tâches (en bas à droite – ou bien lancer une recherche en tapant Son dans la barre menu principal de recherche de Windows) puis cliquer sur Son.

  4. Sur l’onglet Lecture de la fenêtre qui s’est ouverte, doit apparaître dans la liste, une voie audio intitulée ITE6802 . Un clic droit, suivi d’un clic sur Tester doit vous montrer une animation du barre-graphe vert. Tout est alors fonctionnel.

  1. Connectez-vous à l’encodeur depuis un navigateur internet en tapant sont adresse IP qui est 192.168.1.120. Le login a saisir est admin et le mot de passe 12345

  2. Après vous être connecté, sur la page Live view, et valider l’avertissement du navigateur pour autoriser Flash player

  3. Vous visualiser dans la fenêtre intégré sur cette page, le flux vidéo capturé par l’encodeur. Dans mon cas, il s’agit de l’écran numéro 3.

Piloter l’encoder vidéo

Il existe deux façons d’utiliser le couple PlutoDVB et Encoder externe :

Nous allons étudier les deux méthodes. Voyons d’abord la méthode manuelle.

Mauvaise nouvelle pour l’audio de l’encodeur ?

Certains d’entre vous avez bien sur déjà testé le boitier et avez surement constaté des soucis. En effet la voie audio injecté n’arrive pas au PlutoDVB. Réjouissez-vous, les solutions existent pour les deux méthodes (manuelle et automatique). Elle complexifie quelques peu l’utilisation mais comme à l’habitude, en suivant les étapes ci-dessous, vous arriverez au résultat escompté : des images H265 accompagné de l’audio.

Clarifions le soucis technique de l’audio: Par défaut, l’encodeur ne transmet pas l’audio sur la voie de streaming. Pour débloquer cette situation, nous avons besoin de lui positionner un paramètre “audioen” pour “audio enable” . Hors ce paramètre n’est curieusement pas disponible sur l’interface web de l’encodeur. Nous allons pouvoir lui envoyer par le biais de son interface “informatique”, son serveur API (c’est ce canal qu’utilise PlutoDVB en méthode automatique).

Tout d’abord la sélection de la méthode se réalise du fait du renseignement ou pas de l’adresse IP de votre encodeur dans la page Controller de PlutoDVB. Pour notre méthode manuelle, vous devez avoir le champ IP vide (ou avec la valeur undefined). Ne pas oublier de cliquer sur le bouton Apply Settings.

Préalablement à l’utilisation en mode manuelle, nous allons installer un outil d’informaticien qui va nous permettre de communiquer dans le bon langage avec le serveur API de l’encodeur et lui passer notre paramètre audioen manquant. De plus, cela nous permettra par la suite de régler tous les paramètres de l’encodeur video directement. Pas d’inquiétude, tout est expliquer étape par étape.

Pilotage de l’encodeur par un logiciel REST client

  1. Télécharger et installer le logiciel Advanced client REST
  2. Cliquer sur SKIP à la fenêtre de bienvenue.
  3. Télécharger le fichier de configuration préparé pour vous  : arc-data-export-H265.txt
  4. Choisir Import Data dans le menu File
  5. Cliquer sur OPEN FROM FILE

  6. Sélectionner le fichier “txt” téléchargé. Pour confirmer l’import du projet “H265-Encoder” des 3 requêtes (audio, video et multicast), cliquer le bouton IMPORT DATA

  7. Vous retrouvez les 3 requêtes dans l’onglet PROJECTS sous H265-Encoder by F5UII. En cliquant sur chaque ligne de la colonne de gauche, un onglet s’affiche à droite avec les noms des 3 requêtes AUDIO VIDEO MULTICAST. Nous allons utiliser l’onglet BODY qui contient l’ensemble des paramètres que nous allons envoyer à l’encodeur.
    Ci dessous (identique à la capture), voici le contenu de la requête qui permet directement d’envoyer. Vous retrouver le paramètre audioen qui nous manquait (<audioen>1</audioen>)

    Vous pouvez modifier les valeurs des différents paramètres positionnés entre les mots clefs <mot clef>, et sans jamais changer le contenu des mots clefs.

    Voici les paramètres qui correspondent à ceux de la page de configuration de votre encodeur que vous trouvez sur sa page Settings / VideoAudio et sur l’onglet Video.

    <request><videoenc>
            <codec>1</codec>                   <!-- 0 = H264  /  1 = H265 -->
            <resolution>1280x720</resolution>  <!-- résolution souhaitée, même si elle ne figure pas dans la liste des résolutions standard proposées par le codeur  -->
            <framerate>30</framerate>          <!-- Images par seconde -->
            <audioen>1</audioen>		   <!-- Doit être à 1. The most important for have sound streaming -->
            <rc>1</rc>			   <!-- Doit être à 1  -->
            <keygop>30</keygop>		   <!-- Group of picture, peut être 2x framerate-->
            <bitrate>380</bitrate>		   <!-- video bit rate en kb/s. A ajuster en fonction de la capacité de votre émission DATV -->
            <quality>5</quality>		   <!-- Doit être à 5, ou peut être moins (à tester...)  -->
            <profile>0</profile>		   <!-- Doit être à 0 pour le flux mainstream  -->
     </videoenc></request>
  8. Vérifier que l’adresse IP de l’encodeur qui débute la ligne de commande (Request URL) est bien celle du boitier encodeur. L’adresse de notre configuration est celle du boitier par défaut qui est 192.168.1.120. Cliquer sur SEND. La requête est envoyée au boitier. Si le boitier a bien reçu vos paramètres, un “200 OK” vert s’affiche tout en bas de Advanced REST client. C’est grâce à cette petite ligne <audioen>1</audioen> que l’audio sera disponible dans votre flux et alors diffusé par PlutoDVB.
    Notez bien que votre encodeur garde ce paramètre en mémoire, même après remise sous tension. Vous pourrez ainsi utiliser la méthode automatique directement (voir plus loin). Bien-sûr, et au contraire, si vous utilisez la fonction de reset de l’encodeur (accessible par le menu Setting / System, onglet Maintain – bouton reset factory), cela ne cela plus le cas.

  9. Vous pouvez vérifier directement sur la page de l’encodeur que vos paramètres sont bien ceux que vous venez de passer. Ne vous inquiétez pas si la zone définition affiche une zone vide. Cela est normal si vous demandez une définition qui n’est pas prévue dans la liste des définitions proposé par la page interactive du décodeur. La résolution est tout de même prise en compte. Vous pouvez facilement le vérifier en connectant VLC sur le flux RTSP. Pour ce faire, lancer VLC (VideoLan). Ouvrir le flux réseau (Menu Media Ouvrir un flux réseau ou CTRL-N) de ce que le boitier est capable d’encoder. Le canal a connecter est le Main stream qui est numéroté zéro, en saisissant rtsp://192.168.1.120:554/live/0 dans VLC. Pour afficher la définition, et vérifier le codec utilisé, faire CTRL-J

  10. La requête audio permet elle-aussi de configurer la caractéristique de votre piste audio. A nouveau, après avoir cliquer sur SEND, vous pouvez constater sur la page Settings / VideoAudio, onglet Audio de l’encodeur que vos paramètres ont été pris en compte.
    <request><audioenc>
       <channel>1</channel>     <!-- 0 pour mono, 1 pour stereo -->
       <bitrate>32000</bitrate> <!-- audio bitrate : 32000 48000 64000 128000 -->
       <codec>2</codec>         <!-- Codec 0=G711U, 1=G711A, 2=AAC (bon choix) -->
       <samples>48000</samples> <!-- Bitrate 32000 44100 48000 (bon choix) -->
       <input>0</input>         <!-- 0 pour entrée HDMI, 1 pour entrée Ligne analogique -->
    </audioenc></request>
  11. La requête multicast permet tout simplement d’ouvrir le canal de streaming mainstream vers l’adresse IP de votre Pluto. Personnaliser donc votre requête en plaçant entre les balises addr l’adresse IP de votre pluto.
    <request><multicast>
    <mcast>
      <active>1</active>       <!-- 1 pour activer le flux multicast -->
      <port>8282</port>        <!-- 8282 est attendu par PlutoDVB -->
      <addr>192.168.1.8</addr> <!-- L'adresse IP de votre PlutoSDR -->
    </mcast>
    
    <mcast>
      <active>0</active>        <!-- 0 pour désactiver ce flux -->
      <port>10001</port>
      <addr>224.1.2.3</addr>
    </mcast>
    
    <mcast>
      <active>0</active>         <!-- 0 pour désactiver ce flux -->
      <port>10002</port>
      <addr>224.1.2.3</addr>
    </mcast>
    
    </multicast></request>
  12. Nous sommes prêt à lancer OBS Studio, logiciel que vous avez pris en main avec l’article précédent (Émettre en télévision numérique vers le satellite Qatar Oscar 100)

Transmettre vos images avec OBS Studio et le Controller PlutoDVB

  1. Lorsque OBS Studio est lancé, l’encodeur étant bien sûr branché en HDMI sur le même ordinateur, faite un clic droit sur l’écran Programme, et choisir l’écran ITE6802 qui correspond à l’encodeur. De cette façon votre image OBS Studio est affichée à l’entrée HDMI de votre encodeur. Dans VLC qui est connecté en flux RTSP à l’encodeur, vous devez constater effectivement l’image de programme s’y afficher.

  2. Concernant à présent le son, pour faire en sorte que le son de sortie arrive vers l’entrée son HDMI, ouvrir le panneau Paramètres de OBS Studio.Sélectionner l’onglet Audio. Dans le périphérique de Monitoring Audio (Avancé), sélectionner la sortie ITE6802 correspondant à l’encodeur. Valider la modification par OK.

  3. Sur les pistes audio de vos différentes scènes, il vous faut activer la sortie Monitoring : Faites un clic sur la roue de réglage de la voie audio dans le mélangeur, et choisir Propriétés audio avancées.

  4. Valider Monitoring et Sortie sur les canaux audio.
  5. Pour vérifier que le son est envoyé à l’entrée de votre encodeur, ouvrir le panneau de Son de windows pour vérifier le baregraphe dynamique. (Pour lancé ce panneau Son, taper Son dans la barre de recherche Windows, ou clic droit sur le haut parleur de la barre des tâches)

  6. L’image et le son sont donc diffusés, nous pouvons réaliser les réglages du Controller de PlutoDVB.
  7. Ouvrez la page de configuration de votre PlutoDVB, avec votre navigateur dans lequel vous aurez saisie son adresse IP. Ouvrez la page Controller.

  8. Dans la partie Modulator, renseigner votre indicatif et les caractéristiques habituelle de votre émission DATV : Fréquence, Mode, Symbal Rate, FEC.

  9. Sur le panneau de réglage de l’encodeur (Setting, Audio/Video, onglet Video) déterminer le débit CBR qui conviendra à votre transmission précédemment réglée.

  10. Revenez sur PlutoDVB et appliquer à présent vos réglages par le bouton Apply Settings de la partie Modulator.
  11. Vérifier avec la page Analysis que le débit est approprié. Si vous avez des doutes sur ce point, et celui ci étant important pour une bonne transmission, je vous invite à relire ou revoir cette partie d’explication données sur cette page. En bas de la page Controller, utiliser le bouton Save to flash, pour retrouver tous vos paramètres aux prochain redémarrage de l’Adalm Pluto.
  12. La fréquence est toujours libre, alors vous pouvez passer en émission, en appuyant sur le bouton PTT Switch ON du haut de la page. Le même bouton vous servira pour stopper les émissions.
  13. Pendant l’émission, sans interrompre celle-ci vous pouvez modifier les paramètres d’images tel que définition et débit CBR. Vous pouvez opérer ces modifications depuis la page de paramétrage de l’encodeur, ou bien avec le logiciel client REST. Pendant ces opérations, veiller à votre débit sur la page Analysis de PlutoDVB.

Pour rappel, cette méthode ne pourra fonctionner que si vous avez bien réalisé l’envoi de la requête “vidéo” vers le serveur de l’encodeur, lui demandant la transmission de la voie audio (voir plus haut).

  1. Dans le chapitre H264/H265 box control de la page Controller de PlutoDVB, renseigner l’adresse IP de votre encodeur afin que le PlutoDVB puisse envoyer les paramètres optimum au boitier encodage. En effet après avoir renseigné les paramètres de votre émission DATV, PlutoDVB va déterminer les caractéristiques du flux que l’encodeur devra envoyer. Ces paramètres sont notamment la définition (taille) de l’image, le débit d’image automatiquement calculé à partir de votre configuration indiquée dans la partie Modulator.

  2. Dans la partie Modulator, renseigner votre indicatif et les caractéristiques habituelle de votre émission DATV : Fréquence, Mode, Symbal Rate, FEC. Appliquer vos réglage en cliquant sur le bouton Apply Settings.

  3. Lancer VLC (VideoLan). Ouvrir le flux réseau (Menu Media Ouvrir un flux réseau ou CTRL-N) de ce que le boitier est capable d’encoder. Le canal a connecter est le Main stream qui est numéroté zéro, en saisissant rtsp://192.168.1.120:554/live/0 dans VLC
    La définition de l’image affichée correspond à celle qui sera envoyée par l’encodeur au PlutoSDR. Elle est déterminée par un script du PlutoDVB (strategy.sh), en fonction du débit du flux encodé (et donc directement de votre SR et FEC).
    La résolution de l’image répond à ce tableau.
    Video RateResolution W (px)Resolution H (px)Audio Video Rate (fps)
    38421632 k x110
    38421632 k x115
    57632432 k x115
    76843232 k x225
    128072064 k x 225
    >= 1200 k1920108064 k x 225


    Pour afficher la définition, et vérifier le codec utilisé, faire CTRL-J

Le firmware PlutoDVB d’Evariste F5OEO (version for Brave) n’envoi pas, à regret, le paramètre de validation de l’audio au boitier encodeur. Une solution élégante a été trouvée par G4EML aidé de M1SJE.

Colin G4EML nous propose 5 fichiers modifiés à mettre à jour sur le PlutoDVB

Cela va permettre de disposer sur le panneau controller de la possibilité de choisir le codec H264 ou H265 de l’encodeur, de choisir la source audio HDMI ou Line In, et bien sûr de corriger la problématique de l’audio. Par ailleurs sur cette page, la liste des canaux QO100 et leurs fréquences ont été mis à jour, et sont conformes au plan de bande actuelle du transpondeur satellite.

Malheureusement, en raison du fonctionnement du système de fichiers Pluto, il n’est pas possible de modifier les fichiers de façon permanente. Cependant, il existe un moyen de mettre à jour les fichiers à chaque redémarrage.

  1. Copiez les fichiers du dépôt sur une clé USB.
  2. Connectez un hub USB au port OTG de Pluto et branchez la clé USB dans le hub.
  3. Alimentez le port d’alimentation Pluto.
  4. En détectant la clé USB, le Pluto lancera automatiquement le fichier appelé “runme0.sh”. Ce script shell copiera les fichiers modifiés dans le Pluto.Ceci n’est que temporaire et ne modifie en rien votre Pluto. La mise sous tension de Pluton sans la clé USB permet de revenir aux versions originales.

Les fichiers sont disponibles sur le GitHub de Colin : https://github.com/g4eml/Pluto_mods

N’ayant pas réussi personnellement à mettre en oeuvre cette technique de recopie automatisé par clé USB, j’ai entrepris de faire transiter les fichiers depuis un raspberry pi qui est connecté au réseau local, et sur lequel j’ai téléchargé le fichier zip mis à disposition sur Github par Colin

  1. Sur le raspberry (dont l’adresse est 192.168.1.10), connecté avec le compte pi habituel :
    1. sudo wget https://github.com/g4eml/Pluto_mods/archive/master.zip
    2. unzip master.zip
    3. Un répertoire Pluto_mods-master contenant les fichiers est disponible.
      ls Pluto_mods-master
  2. Sur une session SSH sur le pluto :
    1.  mkdir /media/sda
       cd /media/sda
    2. Pour recopier via le réseau
      scp pi@192.168.1.10:/home/pi/Pluto_mods-master/* /media/sda/
    3. Exécuter le script runme0.sh
      sh runme0.sh
    4. J’ai complété l’installation par l’exécution de cette ligne contenu dans runme0.sh, sans les paramètres excluant l’affichage des traces d’exécution. C’est bon pour les curieux comme moi…
      sh /root/udpts.sh

Conclusion

Voilà ce nouvel article traitant de l’encodeur vidéo externe H265/H264 terminé. Pour ceux qui se souviennent de la conclusion de mon dernier article, ce n’est pas tout à fait le sujet qui était prévue pour le prochain article. J’ai finalement souhaité répondre aux nombreuses sollicitations de DATVistes qui ont laisser dormir leur boitier encodeur sur une étagère.

J’espère que Evariste F5OEO va passer par là, et vas pouvoir trouver un instant entre ses nombreux projets pour ajouter à minima cette ligne de code dans encoder_control.php et rediffuser un nouveau firmware à installer sur nos chères PlutoSDR .

En dernier complément, pour information, vous pouvez piloter aisément votre amplificateur externe (en réalité, jusqu’à deux ampli avec tension différentes) grâce à cette petit platine intégrable dans l’Adalm Pluto.

En attendant, à tous, bonnes transmissions en DATV et au plaisir de vous (re)-croiser sur le satellite #QO100. Vous pouvez suivre mes actualités sur twitter.

N’hésite pas à déposer vos commentaires, ou questions directement en commentaire de l’article. J’y répondrai volontiers. A contrario les questions d’intérêt général arrivant par email ou contact privé n’auront pas réponse.Émettre en télévision numérique vers le satellite Qatar Oscar 100 )

Transmit your images with OBS Studio and the PlutoDVB Controller

  1. When OBS Studio is started, the encoder being of course connected in HDMI on the same computer, right click on the Program screen, and choose the ITE6802 screen that corresponds to the encoder. This way your OBS Studio image is displayed at the HDMI input of your encoder. In VLC which is connected as an RTSP stream to the encoder, you should actually see the program image displayed there.

  2. Now for the sound, to make sure that the output sound arrives to the HDMI sound input, open the OBS Studio Settings panel, select the Audio tab. In the Audio Monitoring device (Advanced), select the ITE6802 output corresponding to the encoder. Validate the modification with OK.

  3. On the audio channels of your different scenes, you need to activate the Monitoring output: Click on the audio channel setting wheel in the mixer, and choose Advanced Audio Properties.

  4. Validate Monitoring and Output on audio channels.
  5. To check that the sound is sent to the input of your encoder, open the Windows Sound panel to check the dynamic bar graph. (To launch this Sound panel, type Sound in the Windows search bar, or right-click on the taskbar speaker)

  6. The image and the sound are thus diffused, we can carry out the settings of the PlutoDVB Controller.
  7. Open the configuration page of your PlutoDVB, with your browser in which you will have entered its IP address. Open the Controller page.

  8. In the Modulator section, enter your callsign and the usual characteristics of your DATV transmission: Frequency, Mode, Symbal Rate, FEC.

  9. On the encoder setting panel (Setting, Audio/Video, Video tab) determine the CBR rate that will suit your previously set transmission.

  10. Revenez sur PlutoDVB et appliquer à présent vos réglages par le bouton Apply Settings de la partie Modulator.
  11. Vérifier avec la page Analysis que le débit est approprié. Si vous avez des doutes sur ce point, et celui ci étant important pour une bonne transmission, je vous invite à relire ou revoir cette partie d’explication données sur cette page. En bas de la page Controller, utiliser le bouton Save to flash, pour retrouver tous vos paramètres aux prochain redémarrage de l’Adalm Pluto.
  12. La fréquence est toujours libre, alors vous pouvez passer en émission, en appuyant sur le bouton PTT Switch ON du haut de la page. Le même bouton vous servira pour stopper les émissions.
  13. Pendant l’émission, sans interrompre celle-ci vous pouvez modifier les paramètres d’images tel que définition et débit CBR. Vous pouvez opérer ces modifications depuis la page de paramètrage de l’encodeur, ou bien avec le logiciel client REST. Pendant ces opérations, veiller à votre débit sur la page Analysis de PlutoDVB.

Pour rappel, cette méthode ne pourra fonctionner que si vous avez bien réalisé l’envoi de la requête “vidéo” vers le serveur de l’encodeur, lui demandant la transmission de la voie audio (voir plus haut).

  1. Dans le chapitre H264/H265 box control de la page Controller de PlutoDVB, renseigner l’adresse IP de votre encodeur afin que le PlutoDVB puisse envoyer les paramètres optimum au boitier encodage. En effet après avoir renseigné les paramètres de votre émission DATV, PlutoDVB va déterminer les caractéristiques du flux que l’encodeur devra envoyer. Ces paramètres sont notamment la définition (taille) de l’image, le débit d’image automatiquement calculé à partir de votre configuration indiquée dans la partie Modulator.

  2. Dans la partie Modulator, renseigner votre indicatif et les caractéristiques habituelle de votre émission DATV : Fréquence, Mode, Symbal Rate, FEC. Appliquer vos réglage en cliquant sur le bouton Apply Settings.

  3. Lancer VLC (VideoLan). Ouvrir le flux réseau (Menu Media Ouvrir un flux réseau ou CTRL-N) de ce que le boitier est capable d’encoder. Le canal a connecter est le Main stream qui est numéroté zéro, en saisissant rtsp://192.168.1.120:554/live/0 dans VLC
    La définition de l’image affichée correspond à celle qui sera envoyée par le l’encodeur au PlutoSDR. Elle est déterminée par un script du PlutoDVB (strategy.sh), en fonction du débit du flux encodé (et donc directement de votre SR et FEC).
    La résolution de l’image répond à ce tableau.
    Video RateResolution W (px)Resolution H (px)Audio Video Rate (fps)
    38421632 k x110
    38421632 k x115
    57632432 k x115
    76843232 k x225
    128072064 k x 225
    >= 1200 k1920108064 k x 225


    Pour afficher la définition, et vérifier le codec utilisé, faire CTRL-J

Le firmware PlutoDVB d’Evariste F5OEO (version for Brave) n’envoi pas, à regret, le paramètre de validation de l’audio au boitier encodeur. Une solution élégante a été trouvée par G4EML aidé de M1SJE.

Colin G4EML nous propose 5 fichiers modifés à mettre à jour sur le PlutoDVB

Cela va permettre de disposer sur le panneau controller de la possibilité de choisir le codec H264 ou H265 de l’encodeur, de choisir la source audio HDMI ou Line In, et bien sûr de corriger la problématique de l’audio. Par ailleurs sur cette page, la liste des canaux QO100 et leurs fréquences ont été mis à jour, et sont conformes au plan de bande actuelle du transpondeur satellite..

Malheureusement, en raison du fonctionnement du système de fichiers Pluto, il n’est pas possible de modifier les fichiers de façon permanente. Cependant, il existe un moyen de mettre à jour les fichiers à chaque redémarrage.

  1. Copiez les fichiers du dépôt sur une clé USB.
  2. Connectez un hub USB au port OTG de Pluto et branchez la clé USB dans le hub.
  3. Alimentez le port d’alimentation Pluto.
  4. En détectant la clé USB, le Pluto lancera automatiquement le fichier appelé “runme0.sh”. Ce script shell copiera les fichiers modifiés dans le Pluto.Ceci n’est que temporaire et ne modifie en rien votre Pluto. La mise sous tension de Pluton sans la clé USB permet de revenir aux versions originales.

Les fichiers sont disponibles sur le GitHub de Colin : https://github.com/g4eml/Pluto_mods

N’ayant pas réussi personnellement à mettre en oeuvre cette technique de recopie automatisé par clé USB, j’ai entrepris de faire transiter les fichiers depuis un raspberry pi qui est connecté au réseau local, et sur lequel j’ai téléchargé le fichier zip mis à disposition sur Github par Colin

  1. Sur le raspberry (dont l’adresse est 192.168.1.10), connecté avec le compte pi habituel :
    1. sudo wget https://github.com/g4eml/Pluto_mods/archive/master.zip
    2. unzip master.zip
    3. Un répertoire Pluto_mods-master contenant les fichiers est disponible.
      ls Pluto_mods-master
  2. Sur une session SSH sur le pluto :
    1.  mkdir /media/sda
       cd /media/sda
    2. Pour recopier via le réseau
      scp pi@192.168.1.10:/home/pi/Pluto_mods-master/* /media/sda/
    3. Exécuter le script runme0.sh
      sh runme0.sh
    4. J’ai complété l’installation par l’exécution de cette ligne contenu dans runme0.sh, sans les paramètres excluant l’affichage des traces d’exécution. C’est bon pour les curieux comme moi…
      sh /root/udpts.sh

Conclusion

Voilà ce nouvel article traitant de l’encodeur vidéo externe H265/H264 terminé. Pour ceux qui se souviennent de la conclusion de mon dernier article, ce n’est pas tout à fait le sujet qui était prévue pour le prochain article. J’ai finalement souhaité répondre aux nombreuses sollicitations de DATVistes qui ont laisser dormir leur boitier encodeur sur une étagère.

J’espère que Evariste F5OEO va passer par là, et vas pouvoir trouver un instant entre ses nombreux projets pour ajouter à minima cette ligne de code dans encoder_control.php et rediffuser un nouveau firmware à installer sur nos chères PlutoSDR .

En dernier complément, pour information, vous pouvez piloter aisément votre amplificateur externe (en réalité, jusqu’à deux ampli avec tension différentes) grâce à cette petit platine intégrable dans l’Adalm Pluto.

En attendant, à tous, bonnes transmissions en DATV et au plaisir de vous (re)-croiser sur le satellite #QO100.

N’hésitez pas à déposer vos commentaires, ou questions directement en commentaire de l’article. J’y répondrai volontiers. A contrario les questions d’intérêt général arrivant par email ou contact privé n’auront pas réponse.