Mise à jour du 24 Aout 2011
======================
Bonjour à tous les fan de Hardware.fr
Voici un tutoriel que j'ai réalisé afin de convertir une chaine de la TNT, ou d'une Freebox HD (fichier M2TS), ou encore un fichier d'un caméscope HD (AVCHD), en MP4 ou en MKV, aussi facilement que vous le pensez.
En effet, rien de plus énervant que de ce retrouver avec un fichier en .TS qui pèse plus de 7Go comportant des Pubs avant et après l'émission ou le film que l'on désire garder.
Il existe sur le Web une multitude de logiciels payant et gratuit qui permettent de convertir et/ou de couper une partie de la vidéo que l'on désire supprimer.
Mais voilà, certains logiciels (software, freeware, shareware) ne font qu'à leur têtes et un bon nombre ne fonctionnent pas correctement ou bien avec un résultat plutôt décevant voire médiocre à la fin du traitement finale du fichier. Que du temps de perdu ! Certains même, n'ouvrent pas du tout le fichier car il est inconnu ou corrompu avec, souvent, un Crash du logiciel.
J'ai essayé pas mal de freeware, comme Super, Mediacoder, Avidemux, Virdualdub, Handbrake, et j'en oublie à l'heure où j'écris, mais aucun ne me convenaient. Car au final, ma vidéo était soit saccadée, soit non convertie.
Pour les logiciels payant, je les ai testés en version de démonstration. Il y a Tmpgenc Xpress, AVS video converter, HD Video converter, Vegas et d'autres surement que je n'ai pas encore essayés. Ils sont eux aussi décevant. Il m'a fallu parfois encoder une première fois pour ré-encoder une deuxième fois avec un autre software. Et même pour certains logiciels il faut en plus télécharger un pack de codec car sinon, ils ne reconnaissent pas la vidéo. Et même avec un pack, sa plante.
Donc c'est pour cela que je m'attaque à la fameuse ligne de commande afin de savoir ce que je fais et ce que je voudrais avoir à la fin. Pas tout compris ? Explication plus bas :
Pour info :
Un fichier vidéo récupérer sur un boitier décodeur TNT (ou depuis une carte TNT sur PC ou d'un caméscope HD), est un fichier au format TS. TS pour Transport Stream (MTS pour un caméscope et M2TS pour la Freebox HD)
C'est un conteneur vidéo (comme les MKV) qui permet d'englober beaucoup d'informations : Piste vidéo, plusieurs pistes son, des sous-titres et d'autres informations sous forme de Data d'une chaine TNT. Pour un caméscope : une piste vidéo et une piste audio dans un conteneur MTS. |
Ce fichier va être réencoder au format MP4 ou MKV afin d'être lisible sur la plupart des pc et des lecteurs multimédia de salon avec le fameux codec H264/AVC, le plus répandu, et le fameux et l'excellentissime software Ffmpeg avec le codec x264 intégré.
Attaquons maintenant à ce fameux tutoriel.
Tout d'abord, voici ce que ce dont vous aurez besoin pour le traitement vidéo. Rassurez-vous, il n'y a rien à installer, ni à configurer :
Télécharger ffmpeg 32-bit Builds (Shared) si vous avez un système 32 bits ou 64-bit Builds (Shared) si vous avez un 64 bits, prenez la dernière version à cette adresse : http://ffmpeg.zeranoe.com/builds/
C'est tout ? Et oui, point besoin de pack ou de config supplémentaires. FFmpeg et LE meilleur encodeur gratuit ET autonome (un peu comme VLC pour lire sans installation de logiciel tiers). Qui dit mieux ?
Aussi, je vous le dis maintenant, il faut pour traiter la vidéo, un ordi assez puissant (n'essayer pas avec un EEEpc. Je sais qu'il y en a qui le ferais
). Ayez au moins un Core i5 voire i7 double cœur ou même mieux, un quadri cœur. L'encodage de la vidéo risque d'être très très long pour ceux qui ont une petite config.
Un exemple avec un QuadCoeur Q6600 / Core2Duo E8XXX : Encodage vidéo à 7-12 image/sec. Avec un Core i7 quadricœur : 25-30 image/sec. CUDA n'est pas pris en charge avec les cartes Nvidia car FFmpeg ne le gère pas encore (pour le moment).
Ce tutoriel n'est pas vraiment simple à réaliser car tous est fais en ligne de commande et une petite erreur de virgule ou de caractère peut ne pas marcher et avoir des résultats différents voire catastrophiques. Aussi, il est préférable que le nom des dossiers et/ou des fichiers soient LE PLUS COURT POSSIBLE ET SANS ESPACE OU CARACTÈRE SPÉCIALE afin de ne pas se tromper sur le chemin de fichier.
Une fois télécharger FFmeg, dézipper-le. Prenez un répertoire assez court à la racine de C:\. Par exemple "C:\FFmpeg". Il faut que l’exécutable doit se trouver du genre "C:\FFmpeg\bin\ffmpeg.exe"
Lors du traitement vidéo, il faut beaucoup d'espace disque car ce traitement se fait en plusieurs étapes (vidéo source, vidéo encodée, son encodé). Pour exemple, un fichier TS qui fait 5Go, prévoyez au moins 10Go d'espace libre. Je vous conseille de le faire sur une autre partition ou un disque dur externe (surtout pas une clé USB). Par exemple : <input> = "D:\video\mon_fichier.ts"
Pour ceux qui veulent encoder sans supprimer de parties vidéos, passer à la 2ème partie.
N.B : Les parties en rouge sont des valeurs à changer pour le chemin où se trouve le fichier TS (ou MTS, ou M2TS), en noir et en gras NE PAS TOUCHER
1ère PARTIE : la visualisation / récupération d'infos :
-------------------------------------------------------
- Ouvrez une invite de commande DOS (Menu démarrer, tous les programmes, accessoires, Invite de commandes)
- Lancer cette commande : C:\ffmpeg\bin\ffmpeg -i "<input>" où "<input>" est votre fichier source avec le chemin entier. N'oubliez pas de mettre la source entre guillemets.
- Notez-y les infos suivantes : A la ligne "Duration", récupérer la valeur de "start" (tous les chiffres et les 2 premiers chiffres après la virgules). Pour la partie son, récupérer la valeur du stream (Stream #0.X) qui contient la piste son que vous voulez récupérer (généralement la première ou la seconde en Dolby Digital)
- Lancer cette commande afin de visualiser la vidéo pour conserver la partie que l'on veut garder et couper les bords noir automatiquement : C:\ffmpeg\bin\ffplay -i "<input>" -stats -vf cropdetect,scale=iw/2:ih/2. Les touches "droite/gauche" permettent d'avancer ou de reculer de 10 secondes. Les touches "haut et bas" permettent d'avancer ou de reculer de 1 minute. La touche "s" pour le mode image par image, la barre d'espace pour lecture/pause et la touche "a" pour quitter le lecteur. Cette commande permet, dans la fenêtre DOS, de visualiser la détection des bords noire (ligne CROP= à récupérer) et la valeur du compteur (deux chiffres après la virgules) lorsque la vidéo est en pause à l'aide de la touche S ou la barre d'espace. La commande "scale" permet de réduire la taille de la vidéo par 2 pour visualiser dans une petite fenêtre afin de ne pas occuper tout l'écran. Rien ne vous empêche d'ajouter la commande "-ss" avant le "-i <input>" si vous voulez démarrer la vidéo plus loin dans le temps, la valeur est en secondes. Ex: ffplay -ss 120 -i <input> permet de passer les 120 premières secondes de la vidéo.
- Lorque vous visualisez la vidéo, un compteur tourne dans la fenêtre DOS tout en bas à gauche. Dès que vous avez atteint la partie où commence le film à l'aide des touches "gauches/droites haut/bas" et "S" ou "Espace". Notez la valeur de ce compteur (tous les chiffres et les 2 premiers chiffres après la virgules).
- Continuer à visualiser la vidéo jusqu'à la fin du film (touche flèche du haut pour avancer de 10 minutes) et notez de nouveau le compteur.
- A l'aide d'une calculatrice (ou de tête mais gaffe aux erreurs), soustrayez la valeur du compteur de la fin du film et la valeur du compteur du début du film. Ce qui vous donne le temps exacte en secondes de votre film (rajoutez-y deux secondes de plus afin de ne pas avoir de surprise s'il manque deux secondes du film). Notes ces valeurs sur un papier ou dans un bloc notes
2ème PARTIE : ENCODAGE VIDEO/AUDIO : (La plus longue étape)
--------------------------------------------
Pour ceux qui veulent encoder sans supprimer de parties vidéos, voici la ligne de commande à effectuée : C:\ffmpeg\bin\ffmpeg -i "<input>" -threads 0 -an -sn -vcodec libx264 -profile high -preset faster -crf 27 -vf yadif=0:-1,scale=1920:1080,setdar=16:9,format=yuv420p -qmin 10 -alang fra -x264opts videoformat=pal -y "<output.m4v>". Ensuite passez à la 3ème étape.
- Reprenez la valeur de "start" (la ligne Duration), que vous avez pu noter au début de la 1ère partie. A l'aide d'une calculette, soustrayez la valeur du compteur du début du film et la valeur de "start". Ce qui vous donne le temps en secondes avant le début du film (les fameuses PUB et la météo)
- Voici maintenant la commande afin de convertir la vidéo uniquement : C:\ffmpeg\bin\ffmpeg -ss xx -i "<input>" -threads 0 -an -sn -vcodec libx264 -profile high -preset faster -crf 27 -vf yadif=0:-1,crop=1920:1072:0:4,scale=1920:1080,setdar=16:9,format=yuv420p -qmin 10 -alang fra -t xx -x264opts videoformat=pal -y "<output.m4v>". La commande "-ss" permet de mettre le temps avant le film et la commande "-t" la durée de votre film. ATTENTION A NE PAS VOUS TROMPER. Petite indice la valeur de la commande -ss est plus petite que la valeur de la commande -t.
"<input> et <output>" : vos fichiers sources et destinations avec le chemin complet.
"-an -sn" : Désactive les sous-titres et la partie audio.
"-crf xx" : correspond à la qualité de la vidéo, plus vous descendez vers 0, meilleur sera la qualité, mais plus gros sera le fichier. Je vous conseille de ne pas monter au-dessus de 30 (ça va jusqu'à 50) car la qualité commence à se dégrader pour une vidéo HD (légère pixellisation, et vidéo moins nette). Vous pouvez mettre à la place de "-crf" la commande "-b 5000k" pour par exemple mettre une valeur fixe en bitrate (ici : 5000 Kbits/sec)
"-crop=" : Mettez-y la valeur récupérer lorsque vous avez prévisualisez la vidéo (CROP=). A défaut, vous pouvez enlever cette commande avec la virgule afin d'avoir ceci : -vf yadif=0:-1,scale=1920:1080,setdar=16:9,format=yuv420p. Le reste n'y toucher pas.
"yadif=0:-1" : signifie le désentrelacement de la vidéo avec le filtre YADIF (le meilleur, voire sur google : YADIF), le 0 signifie en "simple framerate" (le 1 pour "double framerate", mais taille fichier plus gros et qualité égale) et -1 détection automatique des lignes paire et impaire.
"scale" : signifie que la vidéo après avoir supprimer les bords noire sera remis en 1920 par 1080 afin de garder la compatibilité du format vidéo en 16/9ème.
- Patientez un bon moment.
- On va faire pareil pour le son : C:\ffmpeg\bin\ffmpeg -ss xx -i "<input>" -threads 0 -acodec ac3 -map 0.2 -ab 192000 -ar 48000 -ac 2 -alang fra -vn -t xx -y "<output.ac3>". N'oubliez pas de bien mettre la bonne piste son. Moi dans mon cas j'ai choisi la 2ème (map 0.2). On encode en 192k (-ab 192000) 48000hz (-ar 48000) et en stéréo (-ac 2). Rien ne vous y oblige à changer ces valeurs.
- L'encodage est un peu plus rapide, comptez au moins 10 bonnes minutes.
Oubliez le AAC car Ffmpeg ne le gère pas bien, cet encodeur est en version expérimental et donne de mauvais résultat. La bibliothèque libavaac n'existe plus sur cette version de Ffmpeg.
3ème PARTIE : REMUXAGE DE LA VIDEO ET AUDIO: (Sortie en MP4 ou MKV)
----------------------------------------------------
- Une fois la vidéo et l'audio reconvertis, il faut maintenant les assembler afin d'avoir qu'un fichier vidéo. Voici la commande pour le mp4 : C:\ffmpeg\bin\ffmpeg -i "<input.m4v>" -i "<input.ac3>" -acodec copy -vcodec copy -y "<output.mp4>" ou bien pour le mkv : C:\ffmpeg\bin\ffmpeg -i "<input.m4v>" -i "<input.ac3>" -acodec copy -vcodec copy -y "<output.mkv>"
- Le temps de tous recoller, cela peut prendre 5 à 8 minutes.
Il se peut que la bande son à un décalage minime sur la vidéo. Cela peut arriver, moi c'est un peu le cas pour les émissions TV. Dans ce cas, il faut refaire un remuxage mais avec un paramètre en plus, la commande "-itsoffset". Si la bande son est EN AVANCE sur la vidéo, alors la commande est : C:\ffmpeg\bin\ffmpeg -i "<input.m4v>" -itsoffset xx -i "<input.ac3>" -acodec copy -vcodec copy -y "<output.m__>". Si la bande son est EN RETARD sur la vidéo alors la commande est : C:\ffmpeg\bin\ffmpeg -i "<input.ac3>" -itsoffset xx -i "<input.m4v>" -acodec copy -vcodec copy -y "<output.m__>". La valeur de "itsoffset" est exprimée en secondes. Par exemples "-itsoffset 0.100" signifie un décalage de 100ms. (C'est mon cas pour la TNT avec une légère avance de la bande son de 100ms)
- Voilà, le fichier est maintenant reconverti et lisible sur la plupart des platines de salon. Note: vous avez-vu la taille finale de votre fichier ?
Félicitation, vous avez pu ré-encoder votre fichier en deux temps trois mouvement.
Merci d'avoir choisi et de lire ce tutoriel jusqu'au bout. J’espère que vous avez appréciez et découvrir que votre fichier est correcte.
Pour toutes questions ou autres remarques, merci de me laisser des commentaires.
N.B : Suite à des personnes qui ont des soucis avec d'autres vidéos, je précise aussi que vous pouvez prendre exemple sur ce tutoriel pour aussi convertir tout autres fichier vidéo en entrée (AVI, MOV, MPEG1/2/4, DiVX3/4/5/6, ASF, MTS, M2TS, TS, WMV et RM). C'est fait pour ça et c'est tout aussi simple (et aussi rapide, voire plus rapide mais surtout plus pratique) qu'un "bad-machinware" ![;) ;)](https://forum-images.hardware.fr/icones/wink.gif)
Message édité par bdomi49 le 24-08-2011 à 07:10:08