Salut,
A propos
Je réalise régulièrement des enregistrements vidéos des chaines TNT-HD.
Ces enregistrements sont effectués à l'aide de "Windows Media Center (Windows 8.1)" en réception TNT-HD (signal antenne TV) via un tuner TNT "A835-ECO Aver TV Volar Green"
Les fichiers obtenus (container .wtv ou .ts) sont au format suivants (informations MediaInfo)
------------------------------------------------------------------
- Format : AVC – Advanced Video Codec (H.264/AVC)
- Profil du format : High@L4.0
- Paramètres du format, CABAC : Oui
- Paramètres du format, RefFrames : 4 images
- Largeur : 1 920 pixels - Hauteur : 1 080 pixels - Format à l'écran : 16/9
- Images par seconde : 25,000 Im/s
- Espace de couleurs : YUV
- Sous-échantillonnage de la chrominance : 4:2:0
- Profondeur des couleurs : 8 bits
- Type de balayage : MBAFF
- Ordre de balayage : Ligne du haut d'abord
- Coordonnées de chromaticité : BT.709
- Caractéristiques du transfert : BT.709
- Coefficients de la matrice : BT.709
------------------------------------------------------------------
Finalité
Je souhaite pouvoir conserver ces enregistrements dans un format standard tout en conservant la qualité de diffusion.
Pour cela, j'ai retenu le container MKV associé au format H264 en utilisant le codec x264.
Je souhaite donc obtenir un fichier MKV associé à ces formats.
Problématique n°1 - La découpe propre de l'enregistrement
Le principal problème auquel j'ai été confronté afin de réaliser un conversion propre de mes enregistrements et celle du découpage précis de l'enregistrement réalisé. Ainsi, bien qu'il existe de nombreux logiciels prétendant permettre la découpe de flux WTV (ou équivalent dans un container .TS) il y en a très peu qui permettent de couper à la frame prêt : de nombreux logiciels ne permettent que la découpe à la seconde qui ne permet pas de couper le flux proprement, puisqu'on garde alors des images parasites au début où à la fin de la vidéo.
Je me suis alors tourné vers des logiciels permettant la découpe à la frame près. Cependant, dans l'interface des logiciels testés, bien que l'interface permette effectivement cette découpe précise, la sortie de la vidéo découpée pose problème : des artefacts visuels variés apparaissent aux points de découpe de la vidéo, notamment au point d'entrée de la découpe.
Après renseignements (laborieux je dois dire), il s'avère que ce problème est lié au format natif du mode de diffusion de la TNT-HD.
En effet, le flux TNT envoyé est donc au format H264/AVC. Or, dans ce format, la notion de GOP (cf. wikipedia) est problématique.
Si je prends la définition, on a :
Citation :
Un GOP est constitué d'une suite d'images regroupées dans un flux vidéo encodé qui est répété périodiquement jusqu'à la fin de l'encodage. Les images visibles sont générées à partir des images codées contenues dans un GOP.
...
Un GOP contient une seule image I qui correspond à la première image à encoder. Elle est suivie d'une succession d'images P et B dont le motif se répète jusqu'à la fin du GOP. Les images P se situent à intervalle régulier et les images B complètent ces intervalles.
|
Donc, pour simplifier, disons les images d'un GOP sont interdépendantes, dans la mesure où une partie d'entre elles sont encodées en référence à d'autres images de ce GOP (dans le cas le plus simple).
Or, le problème avec un enregistrement TNT-HD, c'est qu'un GOP unique :
1 - Peut-être d'une durée assez longue (ce qui semble être caractéristique de la TNT française),
2 - ... et surtout, de fait, peut intégrer une séquence vidéo qui contient à la fois la fin de la séquence de pub et le début de mon programme (celui que je veux couper précisément).
Or, de très nombreux logiciels permettant la découpe du flux enregistré, bien que permettant un découpe à la frame près, sont en réalité incapable de couper proprement la vidéo. Certes, ils coupent au bon endroit (dans le meilleur des cas), mais, du fait que l'on coupe dans un GOP, ils vont générer des artefacts visuels à l'endroit de la coupure... incapables de gérer correctement le contenu des toutes premières frames.
Au final, après de très nombreux tests, le seul logiciel trouvé qui réalise proprement l'opération est VideoRedo TVSuite H.264 (version 5 en beta).
De fait, pour chaque enregistrement, je le passe dans VideoRedo, j'effectue la découpe à la frame près, et j'exporte le flux découpé.
J'insiste sur la notion d'exportation car, dans cette phase, je n'encode/modifie absolument pas le flux source : j'en fais juste une découpe exportée au même format (container .WTV chez moi ... et codec d'origine non réencodé H264/AVC).
La principale force de VideoRedo, c'est :
1 - Qu'il soit capable de couper proprement sans artefact visuel. Pour cela, il réencode uniquement les frames nécessaires à la bonne réalisation de la découpe. En gros, je pense qu'il part du début du GOP, interprète celui-ci (le décode) et en déduit un réencodage des frames impactées par la découpe.
2 - Que pour le reste de la vidéo (soit 99,999% du contenu), il ne fasse que copier le flux dans le fichier de sortie : on ne touche pas à la qualité de la vidéo, ni aux informations contenus dans le container WTV (pistes sons multiples, ...). De plus, pour le coup, l'opération est très rapide, car il n'y a pas de réencodage à part pour les quelques frames impactées par le découpage.
...
Au final, problématique n°1 réglée : j'obtiens un fichier WTV découpé proprement, tout en ayant conservé la qualité originale de mon enregistrement, ainsi que le contenu additionnel du container WTV (pistes sons multiples, sous-titres DVB-SUB, ...)
Etape suivante - Encodage du flux - Choix d'un logiciel
Après m'être renseigné, j'en suis venu à retenir le container MKV (bien connu) associé au format H.264 avec le codec x264.
L'intérêt du codec x264 c'est qu'il permet d'obtenir un rapport qualité/compression de bon rapport, tout en restant un codec dont la compatibilité en lecture est largement répandue.
Le principal intérêt d'avoir effectué mon découpage de flux de manière indépendante de l'encodage (tout en conservant la qualité d'origine) est que je peux ensuite utiliser de nombreux logiciels gratuits permettant l'encodage MKV en x264.
Parmi ces logiciels, j'avais retenu ceux-ci :
- Handbrake
- Vidcoder (fork d'Handbrake)
- XMedia Recode
La problématique du découpage n'a plus cours, puisque ma source est déjà proprement découpée.
PS :
Les logiciels cités permettent également de fournir des points de découpe temporelle du flux encodé.
Cependant, pour avoir testé ces possibilités, celles-ci ne m'ont pas convaincues :
- il n'y a pas de prévisualisation en tant réel de l'endroit où l'on souhaite couper,
- quand bien même on repère les points de découpe par un time-code précis (hh:mm:sss.msmsms) dans un autre logiciel, la découpe effectué par ces logiciels est imprécise : des décalages important peuvent se produire. Et, pour tester, c'est la galère : il faut régler le time-code, puis encoder (une partie) pour tester, ... un travail fastidieux même pas couronné de succès. Donc...
...
Au final, après lectures et tests, j'ai retenu "XMedia Recode" car :
- il permet, au même titre qu'Handbrake, de régler précisément les paramètres d'encodage x264, [Bon courage ! ]
- ... et surtout il dispose d'une librairie x264 plus à jour que celle d'Handbrake (qui se met à jour moins souvent semble t-il) :
---> Handbrake : x264 core 130r2273b3065e6
---> XMedia Recode : x264 core 142r2479
Que l'un où l'autre soit choisi, il faut de toute façon se renseigner précisément sur les paramètres x264 afin de les régler (tous) dans le profil d'encodage.
Problématique suivante : désentrelacer ou non ?
Dans la mesure où les enregistrements sont réalisés dans une résolution full-HD (1920x1080) je souhaite conserver cette résolution, d'autant plus que le codec x264 permet d'obtenir des résultats poids/compression/qualité tout à fait corrects, même dans cette résolution.
Cependant, autres les autres paramètres du x264, il me reste UN grand choix à faire concernant la phase d'encodage du flux : celui concernant la gestion de l'entrelacement.
En effet, la source TNT enregistrée étant diffusée dans un format entrelacé ("MBAFF - Ligne du haut d'abord (TFF)" ), je dois choisir si je désentrelace ou non.
Or, dans de nombreuses documentations, il est précisé (à juste titre) que l'opération de désentrelacement est une opération :
1 - Définitive :
Si j'encode en entrelacé, j'aurai certes un fichier final en affichage "progressif", mais je ne pourrai pas revenir en arrière, sauf à réencoder.
2 - Affectant la qualité finale du rendu :
Même s'il existe de nombreux algorithmes de désentrelacement, chacun d'entre eux dégrade la qualité initiale du flux.
De plus, en ayant effectué des tests en encodant avec un algo. Yadif (Bob, Temporal & Spatial Check) dans XMedia Recode, j'obtiens une sortie où la bande son peut être très légèrement décalée, chose que je n'obtiens pas en encodant sans désentrelacement.
Donc, sachant qu'on ne présume pas de ce qui servira à la lecture du flux encodé (PC, TV, autres, ...), ma question est la suivante :
- Est-il préférable d'encoder :
--> sans désentrelacement et d'obtenir un flux MKV-x264-entrelacé (mais non altéré sur le principe) que le logiciel de lecture aura à charge de désentrelacer pendant la lecture ?
ou
--> de faire le choix de désentrelacer afin d'obtenir un flux MKV-x264-progressif qui ne nécessitera aucun désentrelacement à la lecture, mais pour lequel l'opération définitive de désentrelacement aura nécessairement produit une baisse de la qualité visuelle (qu'elle soit théorique et/ou perceptible) ?
Un exemple de discussion :
http://www.tvnt.net/forum/desentrelacement-t32726.html
Message édité par _Nada le 12-11-2014 à 15:44:09
---------------
~ Facebook : un algorithme calcule la manière dont tu dois établir des relations sociales numériques, à la vitesse permise par la puissance des ordinateurs. ~ Bienvenue au 21ème siècle !