convertir le mkv en mp4 sans dégrader

Camarades, Camarades, Camarades (c’est unisexe; merci Font&Val)

J’ai un probleme récurrent sur mes gadgets Android: le lecteur systeme n’accelere QUE les videos encodées en H264 avec du son en AAC et emballées dans du .mp4, et les autres lecteurs ne sont pas assez performants pour lire de la HD. Or les vidéos (de vacances…) que je télécharge sur uTorrent sont souvent soit en .mkv, soit avec du son en AC3, soit les deux.

Mon grand age me permet d’avoir quelques souvenirs de .bat, j’ai donc pondu le machin ci-dessous, qui

  • travaille sur tous les .mkv d’un répertoire et de ses sous-répertoires
  • en extrait la video et la copie telle quelle (sans aucun traitement) dans un .mp4 du meme nom
  • en extrait le son et le transforme en aac 128kbps, puis le colle dans le meme .mp4.
  • deplace le fichier source vers le répertoire Trash paramétré au début.

C’est bien entendu Sans Garantie ™, mais bon, les fichiers sources ne sont pas détruits donc au pire… Le truc est assez rustique: la vidéo ne bouge pas, mais le son est dégradé (aac 128kbps), je ne m’occupe pas des sous-titres ni des chapitres qui sont donc perdus.

ca nécessite:

  • ffmpeg pour windows (http://ffmpeg.zeranoe.com/builds/), prenez la version 32 bits
  • assez de place disque pour les deux versions de vos fichiers
  • Windows Vista/7/8 (c’est censé marcher sous 2K et XP aussi, mais j’ai rien pour tester)
  • attention donc, vos .mkv doivent avoir du h264 en codec video.
  • ca convertit tous les .mkv dans l’arbre visé, donc déplacez les .mkv que vous ne voulez pas retraiter.
  • vu que ca ne touche pas a la video, c’est assez rapide, disons 3-4min/fichier 1Go sur le Celeron de mon serveur.

Install:

  • dézipper ffmpeg dans c:\ffmpeg\
  • déplacer les trois .exe de ffmpeg\bin vers \ffmpeg\
  • créer les 2 fichiers .bat ci-dessous dans \ffmpeg:

callconvert.bat:

SET CSrcDir=D:\Videos\Series US\
SET Trash=D:\FichiersTraites\
mkdir %Trash%
SET EXT=*.mkv

for /R "%CSrcDir%" %%i IN (%EXT%) DO (convert.bat "%%i")
pause

éditez la premiere ligne pour que ca pointe vers ce que vous voulez re-paqueter. N’oubliez pas le \ a la fin, ne rajoutez pas d’espaces. Idem pour la deuxieme ligne qui indique ou deplacer les fichiers originaux apres leur traitement.

convert.bat:

IF EXIST %1.mp4 GOTO exit

@echo Conversion for %1 started on %DATE% %TIME% 
ffmpeg -loglevel error -nostats -i %1 -strict -2 -vcodec copy -acodec aac -cutoff 15000 -b:a 128k %1.mp4

:exit 
move %1 "%Trash%"

Utilisation:
ouvrir une ligne de commande dans le dossier ffmpeg, et taper

callconvert

Vérifiez que tout s’est bien passé et que le son vous convient avant de vider %trash% :-p
[hr]
a noter, ca marche aussi avec les .mov (changer la 4eme ligne), par contre avec les .avi et les .flv, non.

Chouette un adepte des fichiers batch !!
En effet ce doit être une question générationnelle, Ms-Dos Users ^^

Les fichiers batch la plus belle invention après celle du fil à couper le beurre !

comme quoi même sous windows une ligne de commande ou un script vaut mieux qu’une appli plein de boutons

ffmpeg power :wink: