Category Archives: Software

Tout ce que vous avez

toujours voulu savoir sur H.264 – H.265…  sans jamais oser le demander !

Avec l’avènement de la DATV à bas débit, il est devenu crucial d’utiliser avec efficience la bande passante disponible pour transmettre de la vidéo et du son. Les codecs H.264 et H.265 sont là, à notre disposition pour atteindre ce but.

Par où commencer ?

Ce document, sans prétention vous donnera, je l’espère, quelques pistes pour maîtriser ces outils sur la plateforme multimédia OBS Studio.

OBS STUDIO supporte de nombreux codecs, dans cette 1er partie, nous allons nous attaquer à l’utilisation du codec H.264 dans sa version encodage « logiciel » (libx264).

Chaque codec implémente de nombreux praramètes pour optimaliser son codage en fonction du but rechercher : par exemple, la meilleure résolution avec une latence minimum pour le débit disponible.

Pour la version « logiciel » du codec H.264 (libx264), les principales options pour gérer l’encodage sont :

Rate control

C’est ce que fait un encodeur vidéo lorsqu’il décide du nombre de bits à « dépenser » pour une image donnée. L’objectif de l’encodage vidéo est d’enregistrer autant de bits que possible, en réduisant la taille du fichier par rapport au fichier d’entrée original, tout en conservant autant de qualité que possible. Le contrôle du débit est une étape cruciale pour déterminer ce compromis entre la taille et la qualité.

Plusieurs modes sont disponibles :

  • ABR – Average Bit Rate
  • CBR – Constant Bit Rate
  • CRF – Constant Rate Factor
  • VBR – Variable Bit Rate

Dans notre cas, nous désirons dans la mesure du possible avoir un débit constant pour notre TS. Le mode retenu est donc : CBR.

Il est bon de noter qu’il n’existe pas de mode CBR natif, mais vous pouvez “simuler” un réglage de débit binaire constant en réglant les paramètres au moyen des options suivantes (en format OBS ):

x264-params=”nal-hrd=cbr” minrate=1M maxrate=1M bufsize=2M

Dans l’exemple ci-dessus, bufsize est le “buffer de contrôle de débit”, il appliquera donc la “moyenne” demandée (1 MBit/s dans ce cas) sur chaque tranche de 2 MBit/s de vidéo.

Les codages CBR sont généralement inefficaces si la vidéo est facile à coder (par exemple, images vides ou noires).

 


Preset

C’est un ensemble d’options permettant de trouver un compromis entre l’efficacité de la compression et la vitesse de codage. Un préréglage plus lent fournira une meilleure compression. Cela signifie que, par exemple, si vous ciblez une certaine taille de fichier ou un débit binaire constant, vous obtiendrez une meilleure qualité avec un préréglage plus lent.

Si vous spécifiez un préréglage, les modifications qu’il apporte seront appliquées avant que tous les autres paramètres ne soient appliqués.

Vous devez généralement régler cette option sur la vitesse la plus lente que vous pouvez supporter.

Les préréglages disponibles par ordre décroissant de vitesse sont:

  • ultrafast
  • superfast
  • veryfast
  • faster
  • fast
  • medium (default preset)
  • slow
  • slower
  • veryslow
  • placebo (à ignorer)

 

Profile

Cette option limite la sortie à un profil H.264 spécifique. Certains appareils (pour la plupart très anciens ou obsolètes) ne prennent en charge que les profils Constrained Baseline ou Main, plus limités. Vous pouvez définir ces profils avec l’option baseline ou main.

La plupart des appareils modernes prennent en charge le profil High, plus avancé. À moins que vous ne deviez prendre en charge des dispositifs limités, il est recommandé de ne pas définir le profil, ce qui permettra à libx264 de sélectionner automatiquement le profil approprié.

 

Tune

Vous pouvez éventuellement utiliser l’option pour modifier les paramètres en fonction de votre contenu d’entrée. Si vous spécifiez un réglage, les modifications seront appliquées après –preset mais avant tous les autres paramètres.

Les réglages actuels incluent:

  • film – utilisation pour un contenu de film de haute qualité
  • animation – bon pour les dessins animés
  • grain – préserve la structure du grain dans les vieux films
  • image fixe – idéal pour le contenu de type diaporama
  • fastdecode – permet un décodage plus rapide en désactivant certains filtres
  • zerolatency – idéal pour un encodage rapide et un streaming à faible latence
  • psnr – ignorez car il n’est utilisé que pour le développement de codec
  • ssim – ignorez car il n’est utilisé que pour le développement de codec

 

 

Voilà pour la partie théorique. Passons à la pratique !

 

Configuration d’OBS Studio pour son utilisation avec l’ADALM-PLUTO DATV Controller d’Evariste F5OEO.

Dans l’exemple ci-dessous, le débit disponible du TS est de 441.130 kb/s (QPSK, SR 333KS/s, FEC 2/3, Pilot off).

Deux façon de faire sont possibles pour piloter le Pluto par OBS : Streaming et Recording.

 

Output mode Streaming

Grâce au serveur RTMP (Real-Time Messaging Protocol) implémenté dans l’ADALM-PLUTO DATV Controller d’Evariste F5OEO, on peut diffuser vers le Pluto de la vidéo et de l’audio de la même façon que vers un service de streaming tel que you tube avec le mode Streaming d’OBS Studio.

Pour cela, ouvrir OBS, allez dans le menu Settings,

Configurer l’onglet Stream selon la documentation en line sur le Pluto.

Configurer l’onglet Streaming dans Output

Output Mode = Advanced

Encoder = x264

Rate Control = CBR (implémente les options pour simuler un débit constant)

Bitrate = 280 Kbps (comme point de départ : env. 70 % du débit disponible du TS)

Use Custom Buffer Size = oui

Buffer Size = 560 Kbps (comme point de départ : env. 2x le Bitrate)

Keyframe Interval = 2

Ce paramètre fait partie du codec H.264. Fondamentalement, une “Keyframe” est une image entièrement compressée, comme un jpeg. L’image suivante n’est qu’un ensemble de données qui indique ce qui est différent de l’image précédente. Lorsque la différence est trop importante, quelques “Keyframes” sont envoyées. Les “Keyframes” sont également envoyées périodiquement pour que la compression ne soit pas trop mauvaise après un certain temps.

Un intervalle plus court entre les “Keyframes” signifie que vous enverrez plus d’images, ce qui nécessite un débit binaire plus élevé. La recherche du réglage optimal dépend du type de vidéo que vous diffusez. Il semble qu’une valeur de 2 secondes soit un bon compromis entre qualité et bitrate.

CPU Usage Preset = selon les performances de votre PC

Profile = (None)

Tune = film

x264 Options = vide

 

 

Pour contrôler que le Transport Stream (TS) que vous générez est correct, l’ADALM-PLUTO DATV Controller, dans son onglet Analysis, vous permet d’analyser la répartition du débit disponible de votre TS entre les différents éléments le composant,  en particulier, la quantité de Null packets qui seraient mieux utilisés par la vidéo si trop nombreux…

Dans la même fenêtre, on peut également visualiser l’utilisation du buffer vidéo de l’application. Cela vous permettra de vérifier que le débit vidéo est adéquat ainsi que la qualité de son débit constant.

Regardez ce qui se passe lorsque que vous changez les différents paramètres de l’encodeur H.264 pour un même stream vidéo en entrée ou pour les mêmes paramètres d’encodage mais avec un stream vidéo plus ou moins dynamique.  C’est fort intéressant !

 

 

Output mode Recording

Le mode Recording d’OBS Studio permet de générer soi-même son Transport Stream (TS) grâce à son accès direct à FFmpeg intégré dans OBS. Cette façon de faire permet non seulement de fournir le TS au TX Pluto mais également au Portsdown et au DATV-Express.

Tous les paramètres de FFmpeg ne sont malheureusement pas disponibles au travers d’OBS, il est donc important de vérifier à l’aide des fichiers logs qu’il n’y pas d’erreurs avec les paramètres utilisés dans la configuration.

Le log est accessible depuis le menu HelpLog FilesView Current Log

 

 

Ouvrir OBS, allez dans le menu Settings, sélectionnez Output

Dans Output, sélectionnez Recording, puis

Output Mode = Advanced

Type = Custom Output (FFmpeg)

FFmpeg Output Type = Output to URL

File path or URL = udp://172.22.22.150:8282?pkt_size=1316

Remplacez l’adresse IP par celle de votre Pluto et contrôler que le port est bien 8282 (le Pluto, par défaut, attend le TS sur ce port).

Toujours dans Output, sélectionnez Container Format = mpegts

Dans Muxer Settings (if any) copiez la ligne suivante :
muxrate=441130 mpegts_pmt_start_pid=255 id=1 mpegts_start_pid=256

Assignez le débit net du TS calculé (dans notre exemple 441.130 kbs) à muxrate. Le paramètre mpegts_start_pid permet de fixer le PID PMT . Le PID vidéo est  mpegts_start_pid et le PID audio mpegts_start_pid + 1

Attention de bien contrôler qu’il y ait qu’un espace entre chaque paramètre !

Puis assignez

Video Birate = 280 Kbps (comme point de départ : env. 70 % du débit disponible du TS)

Keyframe interval = 2

Rescale Output = si nécessaire

Video Encoder = libx264

Video Encoder Settings (if any) = vide…

OBS Studio ne documente pas très bien le passage de paramètres supplémentaires à l’encodeur par ce champ… Commencez donc vos premiers tests en le laissant vide. L’encodeur utilise par défaut : preset = medium; profile = high

Ensuite vous pourrez ajouter des options avec par exemple :

preset=ultrafast tune=film x264-params=nal-hrd=cbr:force-cfr:1 minrate=280k maxrate=280k bufsize=560k

Il est bon de noter qu’il n’existe pas de mode CBR natif, mais vous pouvez “simuler” un réglage de débit binaire constant en réglant les paramètres au moyen des options suivantes (en format OBS ):  x264-params=nal-hrd=cbr:force-cfr:1 minrate=280k maxrate=280k bufsize=560k

Dans l’exemple ci-dessus, bufsize est le “buffer de contrôle de débit”, il appliquera donc la “moyenne” demandée (280 Kbit/s dans ce cas) sur chaque tranche de 560 Kbit/s de vidéo.

Attention de bien contrôler qu’il y ait qu’un espace entre chaque paramètre !

 

 

 

 

 

OBS – StreamFX plugin

StreamFX est un plugin pour OBS Studio, qui ajoute de nouvelles sources, filtres et transitions pour vous donner la possibilité d’améliorer considérablement votre configuration de streaming et d’enregistrement. En particulier, pour nos activités de DATVistes, le plugin ajoute le contrôle complet des encodeurs NVIDIA NVENC H.264 et H.265, AMD AMF H.264 et H.265 via FFmpeg à l’aide d’un interface graphique.

Pour l’utiliser avec l’ADALM-PLUTO QO-100/DATV custom firmware d’Evariste F5OEO, il suffit de :

  1.  Ouvrir OBS, allez dans le menu Settings, sélectionnez Output

  2.   Dans Output, sélectionnez Streaming, puis
      Output Mode = Advanced
      Encoder = NVIDIA NVENC H.264/AVC (via FFmpeg)


Malheureusement, OBS Studio ne supporte pas l’encodeur H.265 en mode streaming malgré de nombreuses demandes de notre communauté…

La procédure pour installer StreamFX : https://github.com/xaymar/obs-streamfx/wiki/Installation

 

 

DVB-S2 Demod GUI

Un nouveau démodulateur DVB-S2/S logiciel. Bluffant !

Le logiciel développé par Marcel peut être téléchargé ici:  http://v.1337team.tk/dvb-s_gui_amsat.zip

Son développement est discuté sur le forum de l’AMSAT-DL ici : DB-S2 Demod GUI

SDRangel DATV Windows !

Merci à l’équipe de développeurs de SDRangel pour avoir inclus le démodulateur DATV dans la version Window de SDRangel.

J’ai testé le démodulateur DATV avec les hardware SDR RTL-SDR, Airspy Mini, PlutoSDR et LimeSDR Mini. Cela fonctionne sans problème pour autant que les drivers aient été installés.

La version utilisée est la V4.3.1. Elle est téléchargeable sur GitHub SDRangel.

Bon essai

Portsdown & LimeSDR

Voilà un joli cadeau de Noël de la part de l’équipe Portsdown !  La version 201811300 introduit le support du LimeSDR Mini et du LimeSDR USB ! 

Les ressources CPU du Raspberry PI étant limitées, les modes de transmission LimeSDR (DVB-S, DVB-S2) sont limités à 1 Ms/s et au-dessous.

ATTENTION – Lors de la calibration avant de transmettre, le LimeSDR transmet à pleine puissance… ce qui peut-être fatal pour l’ampli de puissance !  Deux signaux PTT avec délai sont disponibles pour éviter ce problème.

L’utilisation des LimeSDR avec le logiciel Portsdown est décrite sur le site de la BATC ici:  Using LimeSDR with Portsdown

L’installation du logiciel Portsdown est documentée ici:  Installation for BATC Portsdown Transmitter Stretch Version

Bonne bidouille

Es’hail-2 et GNURadio

A l’occasion de de la Surplus Party 2018 à Zofingue, le swissATV, le groupe technique ATV de l’IAPC a présenté, All-in-One LimeSuite 10 GHz, l’extension à 10 GHz du prototype expérimental All-in-One TX/RX DATV SDR ainsi qu’un prototype d’un émetteur DVB-S2 pour le futur transpondeur large bande Phase 4-A de l’AMSAT à bord du satellite Es’hail-2.

L’émetteur DVB-S2 “logiciel” utilise GNURadio et un script permettant de configurer automatiquement les paramètres d’émission (fréquence, SR, modulation, format vidéo, etc) en fonction du canal d’émission choisi selon la recommandation de l’AMSAT.

Le logiciel implémente les modulations QPSK, 8PSK, 16APSK et 32APSK, les SR 125 KS, 333KS, 1MS et 2MS

Les différents fichiers de ce prototype sont à disposition sur demande.

Merci à notre photographe attitré,  Olivier HB9BBN, pour les photos.

 

AM et FM TV

Pour les nostalgiques et expérimentateurs du numérique, voilà une façon simple d’émettre de l’ATV en modulation d’amplitude et de fréquence grâce au fantastique logiciel SDRangel développé par Edouard F4EXB et au matériel SDR récent du type LimeSDR et  ADALM-Pluto entre autres.

SDRangel intègre un plugin pour l’émission décrit ici :  ATV  modulator plugin  et pour la réception ici :  ATV  Demodulator plugin

Voilà trois photos de mes essais, de gauche à droite, mon prototype All-in-One, transceiver SDR 10 MHz – 12 GHz à base d’un LimeSDR Mini et LMS8001 Companion, en émission AM avec le logiciel SDRangel; réception AM avec un LimeSDR Mini et SDRangel; idem en réception FM.

Portsdown 2018

Strech Software.

Basé sur la dernière version Raspbian Strech pour le Raspberry, l’équipe de la BATC nous offre une nouvelle version du logiciel :  Porsdown 2018 Strech

Les principales améliorations sont :

  • après l’installation initiale, le logiciel démarre en mode écran tactile et est prêt à l’utilisation sans configuration nécessaire depuis un PC. La majorité des fonctionnalités disponibles seulement depuis le PC sont maintenant disponibles sur l’écran tactile
  • la mise à jour du logiciel peut-être initialisée depuis l’écran tactile

Expérience faite, je vous conseille de générer un nouveau système appartir d’une carte SD vierge.

Les procédures pour télécharger Rasbian Strech Lite puis installer Portsdown 2018 Strech sont décritent sur le GitHub de la BATC ici :  Portsdown

 

     

 

Bons essais !

SDRangel DATV !

SDRangel décode les signaux DATV.

Merci à Laurent F4HKW qui a écrit ce plugin et à Pascal F4DAV pour LeanSDR qui est au coeur du processus de démodulation et décodage. Pour le moment, seul le standard DVB-S sans audio est supporté sous linux.

Merci Edouard F4EXV d’un ATV-iste pour ce couteau suisse de la SDR !

Premier essai :  mon TX DVB-S GNU Radio pilotant un Pluto et réception sur SDRangel avec un Airspy Mini.

        

DATV-Express Network Mode

Voici un fichier batch pour Windows dvbs2.bat  vous permettant de contrôler la fonction “Network Mode” de la version 1.26 du logiciel DATV-Express Transmitter.

Un prérequis est l’installation du logiciel FFmpeg utilisé pour construire le Transport Stream fourni à l’entrée UDP du logiciel DATV-Express Transmitter.

Le fichier batch est prévu pour une webcam Logitech Quickcam Pro for Notebooks. Vous pouvez la changer en remplaçant son nom dans le paramètre -i video=”QuickCam Pro for Notebooks” de la commande ffmpeg.

Pour trouver le nom de votre webcam, utiliser la commande suivante:
C:\ffmpeg\bin\ffmpeg -list_devices true -f dshow -i dummy

Pour trouver les formats, résolutions et images/s,  utiliser la commande suivante:
C:\ffmpeg\bin\ffmpeg -f dshow -list_options true -i video=”nom de votre webcam

Le fichier génère un TS pour une modulation DVB-S2, 8PSK, SR2000, FEC 5/6 et Pilots On , soit un débit de 4.844553 Mb/s.  DVB Calculator vous permet de calculer ce paramètre aisément.

Comment l’utiliser ?

Lancer DATV-Express Transmitter, cocher TS/IP In, entrer l’adresse IP 230.0.0.10 et le port 10000 puis PTT. Lancer le fichier dvbs2.bat et, si tout se passe bien, une fenêtre Windows va s’ouvrir et afficher des informations sur le fonctionnement de ffmpeg. Votre Minitioune devrait vous afficher une belle image au format H.264 800×600.

Si vous avez  des problèmes… la première chose à faire est de contrôler le TS que vous envoyez au logiciel. Pour cela, cocher TS Record, le logiciel retransmet le TS entrant sur l’adresse UDP 234.5.5.5, port 10201. Avec TSReader, par exemple, vous pouvez analyser votre TS.

Bonne bidouille.