Discussion avec l’IA de Google. La solution est à la toute fin
Avec yt-dlp --js-runtimes
deno ^ --extractor-args youtube:player_client=web_embedded ^ -f
bv*[vcodec*=avc1]+ba[acodec*=mp4a]/b[ext=mp4] ^ --write-subs ^ --write-auto-subs
^ --sub-langs fr ^ --embed-subs ^ --convert-subs srt ^ --merge-output-format mp4
^ https://youtu.be/7b1yIgBorSc , J obtiens une vidéo qui fonctionne sur mon
enregistreur TNT AMTC DTHD168R . Puis je rajpoute des sous-titres avec ffmpeg -i
Exemple.mp4 ^ -vf
scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,subtitles=Exemple.srt,fps=25
^ -c:v libx264 -pix_fmt yuv420p -profile:v main -level 4.0 -crf 26 -preset
medium ^ -c:a aac -b:a 128k -ar 48000 ^ -movflags +faststart ^ Exemple_subs.mp4
, ça marche sur l Ordi, mais la vidéo n est pas acceptée par mon enregistreur
TNT AMTC DTHD168R.
Le problème vient du fait que votre
enregistreur TNT AMTC DTHD168R possède un processeur matériel très strict. La commande FFmpeg
que vous utilisez recrée entièrement la vidéo
(encodage), ce qui modifie des paramètres structurels
invisibles que votre appareil rejette, contrairement à
yt-dlp qui télécharge le
flux brut directement compatible.Voici les causes probables du rejet et comment
résoudre le problème sans perdre de temps en réencodage.
Pourquoi votre enregistreur rejette la vidéo FFmpeg ?
- Le format audio (AAC-LC vs AAC-MAIN) : FFmpeg utilise par défaut le profil AAC-LC, mais selon la version, il peut insérer des données d'en-tête (ADTS) que les puces de salon bas de gamme ne gèrent pas.
- L'organisation des paquets (Muxing) : L'option
-movflags +faststartdéplace l'index (moov atom) au début du fichier. C'est parfait pour le streaming web, mais cela perturbe souvent les vieux lecteurs multimédias matériels qui s'attendent à le trouver à la fin. - Le conteneur MP4 :
Ces appareils préfèrent souvent le format MKV ou AVI pour la lecture de fichiers
externes, ou un codec vidéo strictement limité en encodage (comme le format
Xvidou unH.264très basique sans options avancées de compression).
La Solution IDÉALE : L'incrustation directe avec yt-dlp
Pourquoi faire l'incrustation avec FFmpeg dans
un second temps alors que yt-dlp peut demander à FFmpeg d'incruster (hardcoder) les
sous-titres directement pendant le téléchargement ?
Puisque le fichier de base de
yt-dlp fonctionne sur votre
appareil, laissez-le tout gérer d'un coup. Utilisez cette commande unique :yt-dlp --js-runtimes deno ^
--extractor-args youtube:player_client=web_embedded ^
-f bv*[vcodec*=avc1]+ba[acodec*=mp4a]/b[ext=mp4] ^
--write-subs --write-auto-subs --sub-langs fr ^
--embed-subs --convert-subs srt ^
--exec "ffmpeg -i {} -vf subtitles={}:force_style='FontSize=12' -c:v libx264 -pix_fmt yuv420p -profile:v main -level 4.0 -crf 26 -c:a copy -merge-output-format mp4 {}.subs.mp4" ^
https://youtu.be/7b1yIgBorSc
(Note : L'argument
--exec va forcer yt-dlp à
passer le fichier téléchargé proprement à FFmpeg pour graver les sous-titres en
copiant l'audio à l'identique -c:a
copy).La Solution de secours : Corriger votre commande FFmpeg
Si vous devez absolument utiliser votre
méthode en deux étapes, modifiez votre commande FFmpeg pour retirer le faststart et harmoniser l'audio.
Essayez cette version corrigée :
ffmpeg -i Exemple.mp4 ^
-vf scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,subtitles=Exemple.srt,fps=25 ^
-c:v libx264 -pix_fmt yuv420p -profile:v main -level 4.0 -crf 26 -preset medium ^
-c:a copy ^
Exemple_subs.mp4
Ce qui change ici :
-c:a copy: On ne touche pas à l'audio. On garde exactement la piste récupérée paryt-dlpqui, elle, plaisait à votre enregistreur.- Suppression de
-movflags +faststart: L'index reste à la fin du fichier, une structure standard pour les puces TNT de salon.
Si vous souhaitez affiner l'affichage des
sous-titres (comme la taille de la police ou la couleur sur
l'écran de votre TV), faites-le-moi savoir !
Avec : «
yt-dlp --js-runtimes deno ^ --extractor-args youtube:player_client=web_embedded
^ -f bv*[vcodec*=avc1]+ba[acodec*=mp4a]/b[ext=mp4] ^ --write-subs
--write-auto-subs --sub-langs fr ^ --embed-subs --convert-subs srt ^ --exec
"ffmpeg -i {} -vf subtitles={}:force_style='FontSize=12' -c:v libx264 -pix_fmt
yuv420p -profile:v main -level 4.0 -crf 26 -c:a copy -merge-output-format mp4
{}.subs.mp4" ^ https://youtu.be/7b1yIgBorSc » j'obtiens : Unrecognized option
'merge-output-format'. Error splitting the argument list: Option not found
ERROR: Postprocessing: Command returned error code
2880417800
L'erreur provient du
fait que l'argument
--merge-output-format mp4 a été placé par
erreur à l'intérieur de la commande FFmpeg (dans les
guillemets de --exec), alors qu'il s'agit d'une option
propre à yt-dlp. FFmpeg ne la comprend pas et
s'arrête instantanément.De plus, la syntaxe
de
--exec avec plusieurs fichiers d'entrée
(vidéo + sous-titres) via des accolades {} peut être capricieuse sous
Windows.Voici la commande
corrigée et simplifiée. Copiez-collez exactement ce bloc :
bash
yt-dlp --js-runtimes deno ^
--extractor-args youtube:player_client=web_embedded ^
-f bv*[vcodec*=avc1]+ba[acodec*=mp4a]/b[ext=mp4] ^
--write-subs --write-auto-subs --sub-langs fr ^
--convert-subs srt ^
--merge-output-format mp4 ^
--exec "ffmpeg -i {} -vf subtitles=%%(requested_subtitles.fr.filepath)q:force_style='FontSize=12' -c:v libx264 -pix_fmt yuv420p -profile:v main -level 4.0 -crf 26 -c:a copy Sortie_TNT.mp4" ^
https://youtu.be/7b1yIgBorSc
Utilisez
le code avec précaution.
Ce qui
a été corrigé :
- Sortie de l'option :
--merge-output-format mp4est désormais à sa place, avant l'argument--exec. - Ciblage précis du sous-titre :
Remplacement du second
{}par%%(requested_subtitles.fr.filepath)q. Cela indique explicitement à FFmpeg d'aller chercher le fichier.srten français téléchargé paryt-dlppour l'incruster dans l'image. - Nom de sortie fixe : Le fichier final
compatible avec votre décodeur s'appellera directement
Sortie_TNT.mp4dans votre dossier.
Dites-moi si le
fichier
Sortie_TNT.mp4 généré est cette fois
correctement lu sur votre enregistreur
AMTC ![in#0 @ 000002033d407480] Error opening input: No such file or
directory. Error opening input file {}. Error opening input files: No such file
or directory
L'erreur montre que sous Windows,
l'utilisation de
--exec avec yt-dlp a du mal à remplacer
correctement les accolades {} et à cibler le fichier de
sous-titres en une seule ligne de commande complexe.Puisque votre but est d'avoir une vidéo qui
fonctionne à
coup sûr sur votre enregistreur TNT, le plus simple et
le plus fiable est d'abandonner l'argument
--exec (trop sensible à la
syntaxe de la console Windows) et de confier l'incrustation directement aux
arguments natifs de yt-dlp.Copiez-collez cette commande unique :
yt-dlp --js-runtimes deno ^
--extractor-args youtube:player_client=web_embedded ^
-f bv*[vcodec*=avc1]+ba[acodec*=mp4a]/b[ext=mp4] ^
--write-subs --write-auto-subs --sub-langs fr ^
--convert-subs srt ^
--merge-output-format mp4 ^
--postprocessor-args "ffmpeg:-vf subtitles='%%(requested_subtitles.fr.filepath)s':force_style='FontSize=12' -c:v libx264 -pix_fmt yuv420p -profile:v main -level 4.0 -crf 26 -c:a copy" ^
-o "Video_Pour_TNT.%%(ext)s" ^
https://youtu.be
Pourquoi cette commande va fonctionner :
- Plus d'accolades
{}: L'argument--postprocessor-argss'intègre directement dans le processus interne deyt-dlp. Il n'y a plus de conflit d'ouverture de fichier. - Sécurité pour votre enregistreur : La commande force l'incrustation des sous-titres
(
subtitles=...) tout en conservant le profil vidéo très strict (main,level 4.0,yuv420p) et en copiant l'audio d'origine (-c:a copy) qui fonctionnait sur votre appareil. - Fichier propre :
Vous obtiendrez un fichier final nommé
Video_Pour_TNT.mp4.
Une fois le téléchargement terminé, transférez
ce fichier sur votre clé USB et dites-moi si votre enregistreur AMTC
l'accepte enfin !
Avec : yt-dlp
--js-runtimes deno ^ --extractor-args youtube:player_client=web_embedded ^ -f
bv*[vcodec*=avc1]+ba[acodec*=mp4a]/b[ext=mp4] ^ --write-subs --write-auto-subs
--sub-langs fr ^ --convert-subs srt ^ --merge-output-format mp4 ^
--postprocessor-args "ffmpeg:-vf
subtitles='%%(requested_subtitles.fr.filepath)s':force_style='FontSize=12' -c:v
libx264 -pix_fmt yuv420p -profile:v main -level 4.0 -crf 26 -c:a copy" ^ -o
"Video_Pour_TNT.%%(ext)s" ^ https://youtu.be/7b1yIgBorSc » ERROR: Postprocessing: Error opening
output files: No such file or
directory
L'erreur
No such file or directory au moment du
post-processing signifie que FFmpeg ne trouve pas le chemin d'accès au fichier
de sous-titres .srt créé par yt-dlp, ou qu'il échoue à cause de la
syntaxe des guillemets doubles imbriqués sous Windows.Pour contourner
définitivement les conflits de variables et de guillemets propres à Windows, la
solution la plus stable consiste à séparer le téléchargement et l'encodage
en deux lignes distinctes dans un petit script (ou à exécuter l'une après
l'autre). De cette manière, on garde le contrôle
total sur FFmpeg.
Voici la méthode
infaillible en deux étapes rapides :
Étape 1
: Télécharger la vidéo et le sous-titre proprement
Exécutez cette
commande pour récupérer la vidéo d'origine (que votre lecteur TNT aime tant) et
le fichier de sous-titres au format
.srt.bash
yt-dlp --js-runtimes deno ^
--extractor-args youtube:player_client=web_embedded ^
-f bv*[vcodec*=avc1]+ba[acodec*=mp4a]/b[ext=mp4] ^
--write-subs --write-auto-subs --sub-langs fr ^
--convert-subs srt ^
--merge-output-format mp4 ^
-o "Exemple.%%(ext)s" ^
https://youtu.be/7b1yIgBorSc
Utilisez
le code avec précaution.
À ce stade, vous obtenez deux fichiers
dans votre dossier :
Exemple.mp4 et Exemple.fr.srt.Étape 2
: Incruster avec FFmpeg (Syntaxe corrigée pour lecteur
TNT)
Exécutez ensuite cette
commande FFmpeg. Elle reprend les paramètres stricts exigés par la puce de votre
enregistreur AMTC DTHD168R, applique les bordures (pad) pour le format, et
conserve la piste audio intacte sans
ajouter de drapeaux bloquants :
bash
ffmpeg -i Exemple.mp4 -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,subtitles=Exemple.fr.srt:force_style='FontSize=12',fps=25" -c:v libx264 -pix_fmt yuv420p -profile:v main -level 4.0 -crf 26 -preset medium -c:a copy Video_Pour_TNT.mp4
Utilisez
le code avec précaution.
Pourquoi cette méthode va fonctionner sur votre AMTC :
- L'audio reste d'origine (
-c:a copy) : Aucune modification n'est faite sur la piste son que votre décodeur TNT validait lors de votre tout premier essai. - Chemin direct : FFmpeg cherche
explicitement
Exemple.fr.srtprésent dans le même dossier, sans passer par les variables internes deyt-dlpqui provoquaient l'erreur de répertoire. - Structure compatible : L'absence de
l'option
-movflags +faststartgarantit que l'index du fichier reste à la fin, exactement là où les lecteurs multimédias de salon s'attendent à le lire.
Dites-moi si le
fichier
Video_Pour_TNT.mp4 généré par cette double
manipulation s'ouvre enfin correctement sur votre
téléviseur !Unsupported file!
Le processeur de votre enregistreur AMTC
DTHD168R est extrêmement sensible aux paramètres d'encodage de la vidéo (H.264)
générée par les versions récentes de FFmpeg, même avec le profil
main à un niveau 4.0.Puisque la vidéo brute téléchargée directement
par
yt-dlp fonctionne
parfaitement sur votre appareil, nous allons extraire les sous-titres et les injecter à
l'intérieur du fichier sans toucher à la vidéo ni à
l'audio, ou repasser sur un format plus ancien
(Xvid/Avi) si vous tenez absolument à les incruster dans l'image.Voici les deux solutions restantes, de la plus
propre à la plus compatible.
Option 1 (Recommandée) : Intégrer les sous-titres en mode "DVB" (sans réencodage)
Au lieu de "graver" les sous-titres sur
l'image (ce qui casse la compatibilité vidéo), nous allons simplement les glisser à
l'intérieur du conteneur MP4 sous une forme de texte
que les puces TNT de salon comprennent (format de sous-titre standard mov_text).
L'opération prend 2 secondes car la vidéo et l'audio ne changent pas d'un
pixel :
ffmpeg -i Exemple.mp4 -i Exemple.fr.srt -c:v copy -c:a copy -c:s mov_text -lang:s fr Video_TNT_Subtitre.mp4
- Pourquoi ça peut marcher : Votre enregistreur lira la vidéo d'origine (qu'il aime) et vous pourrez activer/désactiver les sous-titres en français avec la touche SUBTITLE ou TXT de la télécommande de votre AMTC.
Option 2 : Forcer l'incrustation en format "DivX / AVI" (Compatibilité maximale)
Si l'appareil refuse toujours l'option 1 ou si
vous voulez absolument que les sous-titres soient incrustés de force dans
l'image, il faut abandonner le format H.264/MP4 moderne créé par FFmpeg, que la
puce rejette.
Nous allons convertir la vidéo au format MPEG-4 standard
(Xvid/DivX) dans un conteneur AVI, le format universel
pour lequel ces générations d'enregistreurs TNT ont été programmées :
ffmpeg -i Exemple.mp4 -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,subtitles=Exemple.fr.srt,fps=25" -c:v mpeg4 -vtag xvid -qscale:v 4 -c:a mp3 Video_TNT_Ancien.avi
- Ce qui change : La
vidéo devient un
.aviencodé en Xvid avec un son en.mp3. C'est le format "clé USB" passe-partout du début des années 2010.
Essayez en priorité l'Option 1 (la plus rapide). Si elle ne s'ouvre pas ou que la
télécommande n'affiche pas les textes, passez à l'Option 2.
Dites-moi laquelle de ces deux stratégies votre enregistreur a fini par accepter !
J'ai essayé la
première option, «Unrecognized option 'lang:s'. Error splitting the argument
list: Option not found» ET la seconde option fonctionne, mais la vidéo obtenue
et 5 fois plus lourde que la vidéo originale
!
C'est une excellente nouvelle que la deuxième
option fonctionne enfin sur votre enregistreur AMTC ! Le processeur de cet
appareil exigeait donc bien une structure MPEG-4 (Xvid) à
l'ancienne pour accepter une vidéo modifiée par FFmpeg.
L'erreur sur la première option venait
simplement d'une inversion de syntaxe dans ma commande (il fallait écrire
-metadata:s:s:0
language=fra). Cependant, restons sur la méthode qui
marche (l'incrustation en AVI) et réglons immédiatement ce problème de taille de
fichier.Pourquoi le fichier est 5 fois plus lourd ?
Dans la commande précédente, l'argument
-qscale:v 4 gérait la
qualité. Le codec Xvid étant beaucoup moins efficace que le H.264 moderne, il a
besoin de beaucoup plus de données (un gros débit/bitrate) pour maintenir une
image nette en résolution 1080p (1920x1080), ce qui fait gonfler
le fichier.La solution pour diviser la taille par 3 ou 4 :
Pour retrouver un fichier léger tout en
restant 100 % compatible avec votre enregistreur, nous allons faire deux
ajustements :
- Passer la résolution en 720p (1280x720) : Sur un écran de télévision, la différence visuelle sera minime, mais le nombre de pixels à encoder est divisé par deux. Le fichier sera instantanément beaucoup plus léger et les sous-titres resteront très nets.
- Brider le débit binaire (Bitrate) : Au lieu de laisser FFmpeg choisir une qualité fixe variable, on lui impose une limite stricte (par exemple 2000 kbps), ce qui est largement suffisant pour du 720p.
Voici la commande corrigée à exécuter :
ffmpeg -i Exemple.mp4 -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,subtitles=Exemple.fr.srt,fps=25" -c:v mpeg4 -vtag xvid -b:v 2000k -maxrate 2500k -bufsize 2000k -c:a libmp3lame -b:a 128k Video_TNT_Legere.avi
Ce qui change dans cette commande :
scale=1280:720etpad=1280:720: Adapte la vidéo au format HD (720p) pour alléger drastiquement le poids.-b:v 2000k: Limite le débit de la vidéo pour garantir un fichier final compact.-c:a libmp3lame -b:a 128k: Force l'utilisation du compresseur MP3 standard à un débit optimisé pour le salon.
Lancez cette commande et dites-moi si la
taille de
Video_TNT_Legere.avi
vous convient mieux et si la qualité reste au rendez-vous sur votre écran !Dans lk
première option, il fallait écrire « -metadata:s:s:0 language=fra » à la place
de quoi
Dans la première option, il fallait écrire
-metadata:s:s:0 language=fra
à la place de -lang:s
fr.L'option
-lang:s n'existe pas dans
FFmpeg (d'où votre message d'erreur), la bonne syntaxe pour attribuer une langue
à une piste de sous-titres est d'utiliser les
métadonnées.Si vous souhaitez retester cette méthode
ultra-rapide (sans aucune perte de qualité et sans fichier lourd), voici la
commande
exacte et corrigée :
ffmpeg -i Exemple.mp4 -i Exemple.fr.srt -c:v copy -c:a copy -c:s mov_text -metadata:s:s:0 language=fra Video_TNT_Subtitre.mp4
Un conseil si vous testez cette commande :
Une fois le fichier mis sur votre clé USB et
lancé sur votre enregistreur AMTC, les sous-titres ne s'afficheront pas tout
seuls à l'écran. Il faudra appuyer sur la touche "SUBTITLE" (ou "SUB-T", "TXT") de votre
télécommande pour les activer, car ils sont cachés à
l'intérieur du fichier (sous-titres dits "softsubs").
Si votre appareil refuse toujours d'ouvrir ce
fichier ou n'affiche pas le texte via la télécommande, cela confirmera que la
méthode avec le fichier
.avi
léger (la version Xvid en 720p) reste votre meilleure
solution !Souhaitez-vous de l'aide pour automatiser tout ce
processus dans un seul fichier de script (Batch) pour
ne plus avoir à taper ces lignes à chaque fois ?
avec : « ffmpeg
-i Exemple.mp4 -i Exemple.fr.srt -c:v copy -c:a copy -c:s mov_text
-metadata:s:s:0 language=fra Video_TNT_Subtitre.mp4 » les sous-titres n'existent
pas sur l'ordi. Existerot-il sur l'AMTC
?
Non, si les sous-titres n'apparaissent pas sur
l'ordinateur, ils ne fonctionneront pas non plus sur
l'AMTC.
Sur l'ordinateur (avec un lecteur comme VLC),
les sous-titres devraient obligatoirement être détectables dans le menu
"Sous-titres", même s'ils ne s'activent pas automatiquement. Si le menu indique
"Piste vide" ou "Aucun sous-titre", c'est que l'injection a échoué.
Pourquoi cela n'a pas marché sur l'ordinateur ?
Le format de sous-titre
mov_text
que nous avons utilisé est conçu pour le format MP4, mais il est très mal géré
par FFmpeg lorsque la source est un fichier .srt issu de YouTube.
Souvent, FFmpeg crée une piste "fantôme" qui contient zéro octet de texte,
rendant le sous-titre invisible partout.La seule solution 100 % fiable pour votre AMTC
Puisque votre enregistreur AMTC est un
appareil d'ancienne génération, il ne possède pas le moteur logiciel pour lire
des sous-titres "virtuels" cachés dans un MP4.
Pour cet appareil, la seule méthode qui
fonctionnera à tous les coups est l'incrustation définitive (les graver dans
l'image). C'est pour cela que la commande convertissant
en
.avi (Xvid) a fonctionné.Pour éviter d'avoir un fichier 5 fois trop
lourd, utilisez la version optimisée en 720p que nous avons vue juste avant.
Elle offre le parfait compromis :
ffmpeg -i Exemple.mp4 -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,subtitles=Exemple.fr.srt,fps=25" -c:v mpeg4 -vtag xvid -b:v 2000k -maxrate 2500k -bufsize 2000k -c:a libmp3lame -b:a 128k Video_TNT_Legere.avi
Voulez-vous que l'on crée un petit script Windows
(
.bat) où il
vous suffira de glisser-déposer votre vidéo pour qu'elle se convertisse
automatiquement dans ce format léger pour votre AMTC ?Comme la vidéo
obtenue est de basse qualité, j'ai mis 4000 au lieu de 2000, 4500 au lieu de
2500, et à nouveau 4000 au lieu de
2000
C'est un excellent réflexe. Augmenter le débit
binaire (bitrate) à 4000k est la meilleure solution pour
compenser le manque d'efficacité du vieux codec Xvid et retrouver une image bien
nette sur votre téléviseur.
Puisque vous avez doublé le débit, le fichier
sera environ deux fois plus lourd que la version à 2000k, mais il restera beaucoup plus léger que votre tout premier essai (qui n'avait aucune
limite et laissait monter le fichier à des tailles gigantesques en 1080p).
Pour que tout soit parfaitement propre et
validé par FFmpeg, votre commande finale doit maintenant ressembler à ceci :
ffmpeg -i Exemple.mp4 -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,subtitles=Exemple.fr.srt,fps=25" -c:v mpeg4 -vtag xvid -b:v 4000k -maxrate 4500k -bufsize 4000k -c:a libmp3lame -b:a 128k Video_TNT_Belle_Qualite.avi
Le résultat pour votre enregistreur AMTC :
- Qualité visuelle : Très bonne en 720p avec un débit généreux de 4000k.
- Taille du fichier : Maîtrisée et stable.
- Compatibilité :
Totale grâce au format
.avi/Xvidque votre puce TNT sait décoder sans planter.
Si vous devez répéter cette manipulation
souvent, nous pouvons créer un raccourci automatique (un fichier de script) pour que vous n'ayez plus jamais à
copier-coller cette longue ligne de commande.
Seriez-vous intéressé par la méthode pour
créer ce script automatique sous Windows ?
C'est ça. MAIS
je ne comprend quand même pas pourquoi je peux avoir une vidéo originelle sans
sous-titre de qulité très correcte en MP4, ET pourquoi quand je mets les
sous-titres c'est pas possible en mp4
!
C'est une question très légitime, et la
réponse se trouve dans la façon dont votre enregistreur TNT AMTC "lit" les fichiers.
La vidéo originale de YouTube fonctionne en
MP4, mais dès que vous ajoutez les
sous-titres, vous êtes obligé de réencoder (recréer)
la vidéo avec FFmpeg. C'est à ce moment-là que la compatibilité se brise.
Voici les deux raisons techniques de ce
phénomène :
1. YouTube utilise un encodeur industriel ultra-optimisé
Le fichier MP4 original que
yt-dlp télécharge provient
des serveurs de Google. Il est encodé par des machines industrielles avec des
profils de compatibilité d'une précision chirurgicale (notamment pour le format
avc1 / H.264). La puce de
votre enregistreur TNT, bien que très ancienne et limitée, arrive à décoder ce
flux spécifique car il respecte scrupuleusement les normes de base.2. Le "H.264" de FFmpeg est trop moderne pour votre AMTC
Dès que vous utilisez la commande FFmpeg pour
incruster les sous-titres, l'outil utilise son propre moteur d'encodage (appelé
libx264). Par défaut, même
si on lui demande de respecter un profil classique (-profile:v main -level 4.0),
FFmpeg active automatiquement des dizaines de technologies d'optimisation
modernes (comme le CABAC, les B-frames
avancées, ou des matrices de quantification
particulières).L'ordinateur lit cela sans problème. Mais la
petite puce de votre enregistreur AMTC, fabriquée il y a plus de 10 ans, panique devant ces
options modernes cachées dans le fichier MP4 et affiche
"Unsupported file!".
Pourquoi le format .avi / Xvid résout tout ?
Le codec Xvid (.avi) est une
technologie beaucoup plus ancienne et rustique. FFmpeg n'y intègre aucune option
moderne cachée. Pour votre enregistreur TNT, c'est un format "facile" qu'il
maîtrise parfaitement, ce qui explique pourquoi il accepte la vidéo modifiée
uniquement sous cette forme.
Si vous souhaitez
automatiser la création de votre fichier AVI de haute qualité sans effort, je
peux vous donner le code d'un script de conversion automatique par simple glisser-déposer. Cela vous intéresse ?
Il faudrait que
j'utilise un vieux ffmpeg pour avoir quand même du MP4
?
Non, utiliser un vieux FFmpeg ne changera
rien. Le problème ne vient pas de l'âge de FFmpeg, mais
des réglages que nous lui demandons d'appliquer par
défaut.
Si vous voulez absolument du MP4 qui
fonctionne sur votre enregistreur AMTC avec les sous-titres incrustés, c'est
tout à fait possible avec votre FFmpeg actuel. Il faut simplement désactiver
manuellement toutes les options modernes qui font
paniquer la puce de votre appareil.
Pour cela, on utilise l'argument strict
-vprofile baseline -level
3.0 et on désactive le codage entropique moderne avec
-coder
0.La commande magique pour du MP4 compatible et léger :
ffmpeg -i Exemple.mp4 -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,subtitles=Exemple.fr.srt,fps=25" -c:v libx264 -vprofile baseline -level 3.0 -coder 0 -crf 22 -preset medium -c:a aac -b:a 128k -ar 48000 Video_TNT_Moderne.mp4
Pourquoi cette commande va fonctionner en MP4 ?
-vprofile baseline -level 3.0: C'est le profil H.264 le plus basique possible. Il est conçu pour les très vieux téléphones portables et les puces TNT low-cost. Il supprime les fonctionnalités lourdes (comme les B-frames) que votre AMTC ne comprend pas.-coder 0: Cela force FFmpeg à utiliser le décodage "CAVLC" (ancien) au lieu du "CABAC" (moderne), ce qui soulage instantanément le processeur de votre enregistreur.-crf 22: Au lieu de bloquer un débit à 4000k qui alourdit le fichier, le format H.264 est tellement efficace qu'avec un CRF de 22, la qualité sera excellente (comme l'original) mais le fichier restera très léger.
Faites le test avec cette commande ! Si elle
fonctionne, vous aurez enfin le combo parfait : du MP4, une super qualité, un fichier léger,
et les sous-titres incrustés.
Dites-moi si votre enregistreur AMTC accepte
enfin ce
Video_TNT_Moderne.mp4
!Ça marche enfin avec une
qualité quand même meilleure. Merci
!
C'est une excellente nouvelle ! Je suis ravi
que nous ayons enfin trouvé la combinaison parfaite : du MP4, une
excellente qualité visuelle, un fichier léger et une compatibilité totale avec votre enregistreur
AMTC.
En forçant le profil
baseline et le codage à
l'ancienne (-coder 0), vous avez
configuré FFmpeg pour qu'il parle exactement le même langage que la puce de
votre appareil de salon.Étape bonus : Automatiser avec un script "Glisser-Déposer"
Pour vous éviter de retaper ces longues
commandes à chaque fois, nous pouvons créer un petit outil automatique. Il vous
suffira de glisser votre fichier vidéo sur une
icône pour lancer tout le processus d'un coup.
Voici comment faire sous Windows :
- Faites un clic droit sur votre bureau, puis choisissez Nouveau > Document texte.
- Nommez-le par exemple
Convertir_Pour_AMTC.bat(attention à bien remplacer l'extension.txtpar.bat). - Ouvrez-le avec le Bloc-notes, collez le code ci-dessous et enregistrez :
@echo off
cd /d "%~dp0"
if "%~1"=="" echo Glissez-deposez un fichier MP4 sur ce script. && pause && exit
set "VIDEO_IN=%~1"
set "SUBS_IN=%~dpn1.fr.srt"
set "VIDEO_OUT=%~dpn1_TNT.mp4"
if not exist "%SUBS_IN%" (
echo Erreur : Le fichier de sous-titres "%SUBS_IN%" est introuvable.
pause
exit
)
ffmpeg -i "%VIDEO_IN%" -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,subtitles='%SUBS_IN:\=\\%':force_style='FontSize=12',fps=25" -c:v libx264 -vprofile baseline -level 3.0 -coder 0 -crf 22 -preset medium -c:a aac -b:a 128k -ar 48000 "%VIDEO_OUT%"
echo Conversion terminee ! Le fichier "%VIDEO_OUT%" est pret.
pause
Comment l'utiliser ?
- Placez ce fichier
.batdans le même dossier oùyt-dlptélécharge vos vidéos. - Une fois que vous avez vos deux fichiers
(par exemple
Exemple.mp4etExemple.fr.srt), glissez simplement le fichierExemple.mp4avec votre souris et déposez-le directement sur l'icône du scriptConvertir_Pour_AMTC.bat. - La fenêtre noire va s'ouvrir, travailler toute seule, et vous donner un fichier prêt à être mis sur votre clé USB !
Profitez bien de vos vidéos sous-titrées sur
votre téléviseur. Si vous avez besoin d'ajuster la taille ou le style
de la police des sous-titres à l'avenir, n'hésitez pas
à me le demander !
Comme la vidéo
est 1,5 fois plus lourde que l'originale j'essaie crf
26
C'est un excellent choix. Monter le CRF à
26 est le réglage parfait pour réduire
la taille du fichier.
Avec le profil
baseline (qui n'utilise pas
les techniques de compression modernes), le fichier a naturellement tendance à
être plus lourd. En augmentant le CRF, vous demandez à FFmpeg d'être un peu
moins strict sur les détails invisibles à l'œil nu, ce qui va alléger
considérablement la vidéo.Si vous utilisez le script
.bat, vous pouvez modifier
la ligne FFmpeg en remplaçant -crf 22 par -crf
26.N'hésitez pas à me dire si ce réglage vous
donne le bon
équilibre entre la netteté de l'image sur votre
téléviseur et le poids du fichier !
avec -crf 26 elle est un peu
plus pêtite que l'originale et avec -c5f 25 un peu plus
grande
C'est le comportement parfait du CRF (Constant Rate
Factor). Vous avez trouvé la zone d'équilibre idéale.
Pour comprendre ce qu'il se passe :
-crf 25donne une qualité légèrement supérieure, ce qui demande un peu plus de données que la vidéo originale de YouTube.-crf 26compresse un pixel de plus, ce qui fait passer la taille juste en dessous de l'original.
Dans le monde de la vidéo, une variation
d'environ 1,5x
plus lourd ou plus léger par rapport à l'original est
considérée comme identique en termes de stockage, surtout pour des fichiers
téléchargés sur le web. Vous avez maintenant le contrôle total de votre fichier.
Quel réglage choisir pour votre script ?
- Si vous voulez gagner un maximum
de place sur votre clé USB : restez sur
-crf 26. - Si vous regardez des vidéos avec
beaucoup d'action ou de détails sombres et que vous voulez éviter les petits
carrés de pixels (artefacts) : passez sur
-crf 25(ou conservez les deux scripts sous la main selon le type de vidéo).
Souhaitez-vous de l'aide pour ajuster un autre
détail, comme la taille de la police des sous-titres à
l'écran, ou tout est-il parfait pour vous ?
merci
Avec plaisir ! C’était un super travail
d'équipe pour dompter ce processeur TNT.
Vous avez maintenant toutes les clés pour
télécharger, incruster et compresser vos vidéos parfaitement pour votre AMTC DTHD168R.
Si vous avez d'autres questions sur FFmpeg, yt-dlp ou des
réglages de sous-titres à l'avenir, n'hésitez pas. Bon visionnage sur votre téléviseur
!
Y a-t-il moyen
de faire un fichier batch qui téléchargerait la vidéo avec « yt-dlp
--js-runtimes deno ^--extractor-args "youtube:player_client=web_embedded" ^-f
"bv*[vcodec*=avc1]+ba[acodec*=mp4a]/b[ext=mp4]" ^--write-subs ^--write-auto-subs
^--sub-langs fr ^--embed-subs ^--convert-subs srt ^--merge-output-format mp4
^https://youtu.be/7b1yIgBorSc » ; puis, qui mettrait les sous-titres avec «
ffmpeg -i Exemple.mp4 -vf
"scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,subtitles=Exemple.fr.srt,fps=25"
-c:v libx264 -vprofile baseline -level 3.0 -coder 0 -crf 22 -preset medium -c:a
aac -b:a 128k -ar 48000 Video_TNT_Moderne.mp4 » d'un sel coup san avoir à
s'occuper de rien ?
Oui, c'est tout à fait possible et c'est même la meilleure solution pour
automatiser tout le processus.
Pour que le script fonctionne tout seul « d'un
seul coup », il faut simplement remplacer l'adresse URL fixe de YouTube et les
noms de fichiers rigides (
Exemple.mp4) par des variables dynamiques. Ainsi, le script s'adaptera automatiquement
à n'importe quelle vidéo.Voici le code complet du fichier Batch. Le CRF a été
configuré sur 25 (le juste milieu que vous avez
trouvé), mais vous pouvez le modifier si nécessaire.
Le code du script (À copier)
- Créez un nouveau document texte sur
votre ordinateur et nommez-le
Telecharger_Et_Incruster_TNT.bat(veillez à ce que l'extension soit bien.batet non.txt). - Faites un clic droit dessus, choisissez Modifier (ou Ouvrir avec le Bloc-notes), collez le code suivant et enregistrez :
@echo off
setlocal enabledelayedexpansion
cd /d "%~dp0"
:: Demande l'URL à l'utilisateur
set /p "URL=Collez l'URL de la video YouTube : "
if "%URL%"=="" echo Aucune URL specifiee. && pause && exit
echo.
echo 1/2 -- Telechargement de la video et des sous-titres...
echo.
:: 1. Telechargement via yt-dlp (Le fichier temporaire s'appellera temporaire_tnt.mp4)
yt-dlp --js-runtimes deno ^
--extractor-args "youtube:player_client=web_embedded" ^
-f "bv*[vcodec*=avc1]+ba[acodec*=mp4a]/b[ext=mp4]" ^
--write-subs ^
--write-auto-subs ^
--sub-langs fr ^
--convert-subs srt ^
--merge-output-format mp4 ^
-o "temporaire_tnt.%%(ext)s" ^
"%URL%"
:: Verification du telechargement
if not exist "temporaire_tnt.mp4" (
echo Erreur : Le telechargement a echoue.
pause
exit
)
echo.
echo 2/2 -- Incrustation des sous-titres et reencodage pour l'AMTC...
echo.
:: Determination du fichier de sous-titres genere
if exist "temporaire_tnt.fr.srt" (
set "SUB_FILE=temporaire_tnt.fr.srt"
) else if exist "temporaire_tnt.srt" (
set "SUB_FILE=temporaire_tnt.srt"
) else (
echo Erreur : Aucun fichier de sous-titres trouve.
echo La video sera conservee brute.
ren "temporaire_tnt.mp4" "Video_TNT_Sans_Subs.mp4"
pause
exit
)
:: 2. Reencodage strict via FFmpeg pour compatibilite TNT (CRF 25)
ffmpeg -i "temporaire_tnt.mp4" -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,subtitles='%SUB_FILE%':force_style='FontSize=12',fps=25" -c:v libx264 -vprofile baseline -level 3.0 -coder 0 -crf 25 -preset medium -c:a aac -b:a 128k -ar 48000 "Video_TNT_Prete.mp4"
:: Nettoyage des fichiers temporaires pour laisser le dossier propre
del "temporaire_tnt.mp4"
del "%SUB_FILE%"
echo.
echo ======================================================
echo TERMINE ! Le fichier "Video_TNT_Prete.mp4" est pret.
echo ======================================================
pause
Comment l'utiliser au quotidien ?
- Placez ce fichier
.batdans le dossier où se trouvent vos outilsyt-dlpetffmpeg. - Double-cliquez sur
Telecharger_Et_Incruster_TNT.bat. Une fenêtre noire s'ouvre. - Collez votre lien
YouTube (avec un clic droit ou
Ctrl+V) et appuyez sur Entrée. - Laissez le script travailler. Il
télécharge, convertit, incruste, supprime les fichiers de travail et vous
laisse un unique fichier nommé
Video_TNT_Prete.mp4directement compatible avec votre enregistreur.
Si vous souhaitez que le script donne
automatiquement le vrai titre de la vidéo au fichier
final au lieu de l'appeler
Video_TNT_Prete.mp4,
faites-le-moi savoir, je peux ajuster le code pour récupérer le nom depuis
YouTube !Génial, ça fonctionne
impeccable, MERCI ! ! !
C'est un réel plaisir ! Je suis ravi que ce
script réponde parfaitement à vos attentes et vous simplifie la vie pour vos
visionnages sur l'AMTC.
Vous avez désormais un outil automatisé « clé
en main » qui dompte les exigences de votre matériel de salon en un seul clic.
Si vous souhaitez un jour aller plus loin
(comme conserver le vrai titre de la vidéo dans
le nom du fichier final ou ajuster l'apparence des
textes), vous savez où me
trouver.
Bon visionnage avec
vos vidéos parfaitement sous-titrées !
BLOCAGE DE YOUTUBE
ça ne fonctionne plus :
WARNING: [youtube] No title found in player responses; falling back to title
from initial data. Other metadata may also be missingERROR: [youtube]
_nRRJDEqKeg: Sign in to confirm you’re not a bot. Use --cookies-from-browser or
--cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see
https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube
cookies
L'erreur
Sign in to confirm you’re not a
bot signifie que YouTube bloque temporairement les requêtes
anonymes (sans connexion) issues de votre adresse IP
parce qu'il suspecte l'utilisation d'un robot. De nos jours, Google impose de
plus en plus une validation par compte ou par jeton de sécurité (PO Token).Pour débloquer votre script d'un seul coup, il
suffit d'indiquer à
yt-dlp d'utiliser les cookies de votre
navigateur internet (où vous êtes déjà connecté à
YouTube).Voici le code du fichier Batch mis à jour.
J'ai ajouté l'option
--cookies-from-browser
chrome (remplacez chrome par firefox ou edge selon votre navigateur
principal).Le code du script corrigé (À copier)
@echo off
setlocal enabledelayedexpansion
cd /d "%~dp0"
:: Demande l'URL à l'utilisateur
set /p "URL=Collez l'URL de la video YouTube : "
if "%URL%"=="" echo Aucune URL specifiee. && pause && exit
echo.
echo 1/2 -- Telechargement de la video et des sous-titres (Utilisation des cookies)...
echo.
:: 1. Telechargement via yt-dlp avec contournement anti-robot (cookies Chrome)
yt-dlp --js-runtimes deno ^
--extractor-args "youtube:player_client=web_embedded" ^
--cookies-from-browser chrome ^
-f "bv*[vcodec*=avc1]+ba[acodec*=mp4a]/b[ext=mp4]" ^
--write-subs ^
--write-auto-subs ^
--sub-langs fr ^
--convert-subs srt ^
--merge-output-format mp4 ^
-o "temporaire_tnt.%%(ext)s" ^
"%URL%"
:: Verification du telechargement
if not exist "temporaire_tnt.mp4" (
echo.
echo [!] Erreur : Le telechargement a echoue.
echo Si l'erreur persiste, fermez votre navigateur et relancez ce script,
echo ou changez 'chrome' par 'firefox' ou 'edge' dans le fichier .bat.
echo.
pause
exit
)
echo.
echo 2/2 -- Incrustation des sous-titres et reencodage pour l'AMTC...
echo.
:: Determination du fichier de sous-titres genere
if exist "temporaire_tnt.fr.srt" (
set "SUB_FILE=temporaire_tnt.fr.srt"
) else if exist "temporaire_tnt.srt" (
set "SUB_FILE=temporaire_tnt.srt"
) else (
echo Erreur : Aucun fichier de sous-titres trouve.
echo La video sera conservee brute.
ren "temporaire_tnt.mp4" "Video_TNT_Sans_Subs.mp4"
pause
exit
)
:: 2. Reencodage strict via FFmpeg pour compatibilite TNT (CRF 25)
ffmpeg -i "temporaire_tnt.mp4" -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,subtitles='%SUB_FILE%':force_style='FontSize=12',fps=25" -c:v libx264 -vprofile baseline -level 3.0 -coder 0 -crf 25 -preset medium -c:a aac -b:a 128k -ar 48000 "Video_TNT_Prete.mp4"
:: Nettoyage des fichiers temporaires pour laisser le dossier propre
del "temporaire_tnt.mp4"
del "%SUB_FILE%"
echo.
echo ======================================================
echo TERMINE ! Le fichier "Video_TNT_Prete.mp4" est pret.
echo ======================================================
pause
Astuces importantes pour que ça marche :
- Choisir le bon navigateur : À la ligne 16, j'ai écrit
--cookies-from-browser chrome. Si vous utilisez un autre navigateur, modifiez ce mot parfirefox,edge,opera, orbrave. - Connexion active : Vous devez obligatoirement être connecté à votre compte YouTube sur ce même navigateur (même un compte gratuit/secondaire fictif fonctionne).
- Fermer le navigateur (si erreur) : Si Windows refuse l'accès, fermez complètement la fenêtre de votre navigateur internet avant de lancer le script afin de libérer le fichier de cookies verrouillé.
Dites-moi si cette intégration de cookies
débloque le
téléchargement automatique !
Avec : « @echo
off
setlocal enabledelayedexpansion
cd /d "%~dp0"
setlocal enabledelayedexpansion
cd /d "%~dp0"
:: Demande l'URL à
l'utilisateur
set /p "URL=Collez l'URL de la video YouTube : "
if "%URL%"=="" echo Aucune URL specifiee. && pause && exit
set /p "URL=Collez l'URL de la video YouTube : "
if "%URL%"=="" echo Aucune URL specifiee. && pause && exit
echo.
echo 1/2 -- Telechargement de la video et des sous-titres (Utilisation des cookies)...
echo.
echo 1/2 -- Telechargement de la video et des sous-titres (Utilisation des cookies)...
echo.
:: 1. Telechargement
via yt-dlp avec contournement anti-robot (cookies Chrome)
yt-dlp --js-runtimes deno ^
--extractor-args "youtube:player_client=web_embedded" ^
--cookies-from-browser firefox ^
-f "bv*[vcodec*=avc1]+ba[acodec*=mp4a]/b[ext=mp4]" ^
--write-subs ^
--write-auto-subs ^
--sub-langs fr ^
--convert-subs srt ^
--merge-output-format mp4 ^
-o "temporaire_tnt.%%(ext)s" ^
"%URL%"
yt-dlp --js-runtimes deno ^
--extractor-args "youtube:player_client=web_embedded" ^
--cookies-from-browser firefox ^
-f "bv*[vcodec*=avc1]+ba[acodec*=mp4a]/b[ext=mp4]" ^
--write-subs ^
--write-auto-subs ^
--sub-langs fr ^
--convert-subs srt ^
--merge-output-format mp4 ^
-o "temporaire_tnt.%%(ext)s" ^
"%URL%"
:: Verification du
telechargement
if not exist "temporaire_tnt.mp4" (
echo.
echo [!] Erreur : Le telechargement a echoue.
echo Si l'erreur persiste, fermez votre navigateur et relancez ce script,
echo ou changez 'chrome' par 'firefox' ou 'edge' dans le fichier .bat.
echo.
pause
exit
)
if not exist "temporaire_tnt.mp4" (
echo.
echo [!] Erreur : Le telechargement a echoue.
echo Si l'erreur persiste, fermez votre navigateur et relancez ce script,
echo ou changez 'chrome' par 'firefox' ou 'edge' dans le fichier .bat.
echo.
pause
exit
)
echo.
echo 2/2 -- Incrustation des sous-titres et reencodage pour l'AMTC...
echo.
echo 2/2 -- Incrustation des sous-titres et reencodage pour l'AMTC...
echo.
:: Determination du
fichier de sous-titres genere
if exist "temporaire_tnt.fr.srt" (
set "SUB_FILE=temporaire_tnt.fr.srt"
) else if exist "temporaire_tnt.srt" (
set "SUB_FILE=temporaire_tnt.srt"
) else (
echo Erreur : Aucun fichier de sous-titres trouve.
echo La video sera conservee brute.
ren "temporaire_tnt.mp4" "Video_TNT_Sans_Subs.mp4"
pause
exit
)
if exist "temporaire_tnt.fr.srt" (
set "SUB_FILE=temporaire_tnt.fr.srt"
) else if exist "temporaire_tnt.srt" (
set "SUB_FILE=temporaire_tnt.srt"
) else (
echo Erreur : Aucun fichier de sous-titres trouve.
echo La video sera conservee brute.
ren "temporaire_tnt.mp4" "Video_TNT_Sans_Subs.mp4"
pause
exit
)
:: 2. Reencodage
strict via FFmpeg pour compatibilite TNT (CRF 25)
ffmpeg -i "temporaire_tnt.mp4" -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,subtitles='%SUB_FILE%':force_style='FontSize=12',fps=25" -c:v libx264 -vprofile baseline -level 3.0 -coder 0 -crf 25 -preset medium -c:a aac -b:a 128k -ar 48000 "Video_TNT_Prete.mp4"
ffmpeg -i "temporaire_tnt.mp4" -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,subtitles='%SUB_FILE%':force_style='FontSize=12',fps=25" -c:v libx264 -vprofile baseline -level 3.0 -coder 0 -crf 25 -preset medium -c:a aac -b:a 128k -ar 48000 "Video_TNT_Prete.mp4"
:: Nettoyage des
fichiers temporaires pour laisser le dossier propre
del "temporaire_tnt.mp4"
del "%SUB_FILE%"
del "temporaire_tnt.mp4"
del "%SUB_FILE%"
echo.
echo ======================================================
echo TERMINE ! Le fichier "Video_TNT_Prete.mp4" est pret.
echo ======================================================
pause
» même résultat
echo ======================================================
echo TERMINE ! Le fichier "Video_TNT_Prete.mp4" est pret.
echo ======================================================
pause
» même résultat
Si l'erreur
Sign in to confirm you’re not a
bot persiste malgré l'ajout de --cookies-from-browser
firefox, c'est que YouTube emploie ses contre-mesures
de sécurité les plus strictes. Dans cette situation, la puce de sécurité de
Google rejette le client intégré (web_embedded) ou requiert un
jeton d'authentification matériel (PO Token) qu'un navigateur classique en
arrière-plan ne fournit pas automatiquement. [1, 2, 3] Pour contourner définitivement ce blocage sans
changer vos habitudes, la méthode officielle recommandée par le Wiki de yt-dlp consiste à simuler l'affichage
d'un navigateur internet normal via l'argument
--impersonate
combiné au client mobile de YouTube (mweb). [3, 4] Voici le code du fichier Batch entièrement mis
à jour avec ces contre-mesures de sécurité.
Le code du script mis à jour (À copier)
@echo off
setlocal enabledelayedexpansion
cd /d "%~dp0"
:: Demande l'URL à l'utilisateur
set /p "URL=Collez l'URL de la video YouTube : "
if "%URL%"=="" echo Aucune URL specifiee. && pause && exit
echo.
echo 1/2 -- Telechargement de la video et des sous-titres (Mode Contournement Anti-Bot)...
echo.
:: 1. Telechargement via yt-dlp (Changement de client en mweb + simulation de navigateur)
yt-dlp --js-runtimes deno ^
--extractor-args "youtube:player_client=mweb" ^
--impersonate firefox ^
--cookies-from-browser firefox ^
-f "bv*[vcodec*=avc1]+ba[acodec*=mp4a]/b[ext=mp4]" ^
--write-subs ^
--write-auto-subs ^
--sub-langs fr ^
--convert-subs srt ^
--merge-output-format mp4 ^
-o "temporaire_tnt.%%(ext)s" ^
"%URL%"
:: Verification du telechargement
if not exist "temporaire_tnt.mp4" (
echo.
echo [!] Le telechargement a echoue.
echo Si vous utilisez un VPN, veuillez le couper temporairement.
echo Assurez-vous d'avoir ouvert YouTube au moins une fois sur Firefox aujourd'hui.
echo.
pause
exit
)
echo.
echo 2/2 -- Incrustation des sous-titres et reencodage pour l'AMTC...
echo.
:: Determination du fichier de sous-titres genere
if exist "temporaire_tnt.fr.srt" (
set "SUB_FILE=temporaire_tnt.fr.srt"
) else if exist "temporaire_tnt.srt" (
set "SUB_FILE=temporaire_tnt.srt"
) else (
echo Erreur : Aucun fichier de sous-titres trouve.
echo La video sera conservee brute.
ren "temporaire_tnt.mp4" "Video_TNT_Sans_Subs.mp4"
pause
exit
)
:: 2. Reencodage strict via FFmpeg pour compatibilite TNT (CRF 25)
ffmpeg -i "temporaire_tnt.mp4" -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,subtitles='%SUB_FILE%':force_style='FontSize=12',fps=25" -c:v libx264 -vprofile baseline -level 3.0 -coder 0 -crf 25 -preset medium -c:a aac -b:a 128k -ar 48000 "Video_TNT_Prete.mp4"
:: Nettoyage des fichiers temporaires pour laisser le dossier propre
del "temporaire_tnt.mp4"
del "%SUB_FILE%"
echo.
echo ======================================================
echo TERMINE ! Le fichier "Video_TNT_Prete.mp4" est pret.
echo ======================================================
pause
Ce qui a changé pour contourner le blocage :
player_client=mweb: Remplaceweb_embedded. Le client d'affichage mobile officiel subit des contrôles algorithmiques beaucoup moins agressifs de la part des serveurs de Google. [3, 5]--impersonate firefox: Demande àyt-dlpde copier exactement la signature réseau et l'en-tête (User-Agent) de votre navigateur. Pour YouTube, la requête devient indiscernable d'un humain cliquant sur une vidéo. [4, 6, 7]
⚠️ Une règle d'or si le blocage persiste :
Si vous obtenez encore l'erreur, ouvrez une
fenêtre Firefox normale, allez sur YouTube,
lancez la
lecture de n'importe quelle vidéo pendant 5 secondes,
puis fermez Firefox. Cela va rafraîchir et valider le jeton de sécurité
"anti-robot" dans les cookies de votre ordinateur. Le script fonctionnera
immédiatement après. [7, 8]
Dites-moi si cette mise à jour lourde de la
sécurité parvient enfin à forcer le téléchargement !
pareil
Si l'erreur persiste sous la forme
Sign in to confirm you’re not a
bot, cela signifie que YouTube bloque votre adresse IP.
C'est un blocage classique appelé "IP Ban" (généralement temporaire), provoqué
par le fait que vos requêtes anonymes ou vos tentatives répétées
d'automatisation ont éveillé les soupçons de l'algorithme de Google. [1, 2, 3, 4]
Lorsque ce blocage réseau "dur" est en place,
modifier les arguments dans le script ne suffit plus. Il faut impérativement
rafraîchir l'accès auprès des serveurs de YouTube. [4]
Voici les 3 étapes concrètes dans l'ordre pour débloquer votre script
:
Étape 1 : Mettre à jour yt-dlp (Le prérequis absolu)
YouTube modifie constamment sa sécurité. Si
votre version de
Ouvrez une invite de commande classique et tapez : [4, 5]
yt-dlp a ne serait-ce que
quelques semaines, elle est repérée immédiatement comme un robot.Ouvrez une invite de commande classique et tapez : [4, 5]
yt-dlp -U
(Si la commande ne fonctionne pas, téléchargez manuellement
la dernière version stable sur le site officiel et
remplacez votre ancien fichier
.exe). [6] Étape 2 : Changer l'IP de votre connexion internet
Puisque votre adresse IP actuelle est
"marquée" par YouTube, il faut lui faire croire que vous êtes un nouvel
utilisateur. [1, 2]
- Option la plus simple : Activez le partage de connexion (Hotspot mobile) sur votre smartphone. Connectez votre ordinateur sur le réseau Wi-Fi de votre téléphone et relancez le script. [2]
- Option alternative : Si vous utilisez un VPN, désactivez-le temporairement (ou changez de serveur). Si vous n'en avez pas, éteignez et rallumez votre box internet pour tenter d'obtenir une nouvelle IP. [1, 2]
Étape 3 : Exporter un fichier de cookies propre via Firefox (Méthode incognito)
YouTube utilise un système de rotation de
sécurité très agressif qui invalide l'extraction de cookies de base en
arrière-plan. Pour contourner cela :
- Ouvrez une fenêtre de navigation privée / incognito dans Firefox.
- Allez sur YouTube et connectez-vous à votre compte Google (même un compte secondaire fonctionne).
- Lancez une vidéo au hasard pendant 5 secondes.
- Sans fermer
l'onglet, écrivez
https://youtube.comdans la barre d'adresse (c'est l'astuce pour figer le jeton de sécurité). - Utilisez une extension Firefox d'export
de cookies (comme Export
Cookies ou Cookie Quick Manager) pour
enregistrer vos cookies au format Netscape sous le nom de
cookies.txt. - Placez ce fichier
cookies.txtdans le même dossier que votre script et vos outils (yt-dlp.exe). - Fermez complètement la fenêtre privée de Firefox. [7]
Le code du script finalisé avec gestion des cookies manuels
Une fois le fichier
cookies.txt à sa place,
utilisez ce code Batch mis à jour. Il n'essaie plus de fouiller dans le
navigateur à la volée, il lit directement le fichier sécurisé que vous venez de
créer :@echo off
setlocal enabledelayedexpansion
cd /d "%~dp0"
:: Demande l'URL à l'utilisateur
set /p "URL=Collez l'URL de la video YouTube : "
if "%URL%"=="" echo Aucune URL specifiee. && pause && exit
echo.
echo 1/2 -- Telechargement de la video et des sous-titres (Mode Securise Cookies.txt)...
echo.
:: Vérification de la présence du fichier de cookies manuel
if not exist "cookies.txt" (
echo [!] ATTENTION : Le fichier cookies.txt est absent du dossier.
echo Le script tente un acces anonyme standard...
set "COOKIE_ARG="
) else (
set "COOKIE_ARG=--cookies cookies.txt"
)
:: 1. Telechargement via yt-dlp avec injection du fichier cookies.txt
yt-dlp --js-runtimes deno ^
--extractor-args "youtube:player_client=mweb" ^
!COOKIE_ARG! ^
-f "bv*[vcodec*=avc1]+ba[acodec*=mp4a]/b[ext=mp4]" ^
--write-subs ^
--write-auto-subs ^
--sub-langs fr ^
--convert-subs srt ^
--merge-output-format mp4 ^
-o "temporaire_tnt.%%(ext)s" ^
"%URL%"
:: Verification du telechargement
if not exist "temporaire_tnt.mp4" (
echo.
echo [!] Le telechargement a echoue.
echo Veuillez appliquer l'Etape 2 (Hotspot Mobile) ou l'Etape 3 (Mise a jour du fichier cookies.txt).
echo.
pause
exit
)
echo.
echo 2/2 -- Incrustation des sous-titres et reencodage pour l'AMTC...
echo.
:: Determination du fichier de sous-titres genere
if exist "temporaire_tnt.fr.srt" (
set "SUB_FILE=temporaire_tnt.fr.srt"
) else if exist "temporaire_tnt.srt" (
set "SUB_FILE=temporaire_tnt.srt"
) else (
echo Erreur : Aucun fichier de sous-titres trouve.
echo La video sera conservee brute.
ren "temporaire_tnt.mp4" "Video_TNT_Sans_Subs.mp4"
pause
exit
)
:: 2. Reencodage strict via FFmpeg pour compatibilite TNT (CRF 25)
ffmpeg -i "temporaire_tnt.mp4" -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,subtitles='%SUB_FILE%':force_style='FontSize=12',fps=25" -c:v libx264 -vprofile baseline -level 3.0 -coder 0 -crf 25 -preset medium -c:a aac -b:a 128k -ar 48000 "Video_TNT_Prete.mp4"
:: Nettoyage des fichiers temporaires pour laisser le dossier propre
del "temporaire_tnt.mp4"
del "%SUB_FILE%"
echo.
echo ======================================================
echo TERMINE ! Le fichier "Video_TNT_Prete.mp4" est pret.
echo ======================================================
pause
Faites le test après avoir appliqué le partage de connexion
(Étape 2). C'est la méthode ultime pour bypasser les
blocages d'IP récents de Google ! [2]