Encodage M2TS vers MP4 (x264)

Hello,

Ma Freebox m’enregistre mes programmes en format .m2ts (apparemment MPEG2) et j’aimerais encoder le fichier vers du .mp4 x264, histoire de gagner un peu de la place.
Actuellement j’ai mon fichier m2ts en FullHD avec un bitrate de ~4000kbits/s (1h de vidéo fait 2.1Go). Je voudrais encoder ça vers du .mp4 x264 en 720p.
J’ai téléchargé ffmpeg pour Windows, et je tente la chose suivante :
ffmpeg.exe -i input.m2ts -c:v libx264 -b:v 2000k -vf scale=1280:720 -preset ultrafast output.mp4
Le fichier output.mp4 créé pèse environ 950Mo, ce qui me parait pas fameux sachant que j’ai réduit la définition, divisé le bitrate par 2 et encodé avec x264. Est-ce que je fais une erreur quelque part (j’y connais que dalle) ?

Merci!

Ce qui compte pour la taille du fichier, c’est uniquement le bitrate. 2000kb/s ça fait 878Mo pour 60 minutes de vidéo, indépendamment des autres paramètres.

D’accord, du coup j’essaye de comprendre comment marche le bitrate avec ffmpeg mais j’ai un peu de mal. Pour le moment je lui passe -b:v 2000k -b:a 128k, mais je trouve le rendu moyen, comparé à d’autres vidéos avec (apparemment) le même bitrate. Je vais m’en contenter pour le moment on va dire. Merci.

Sinon handbrake, avec tout par défaut tu devrais obtenir un truc convenable et d’une taille raisonnable.

Quelques conseils:

  • A part si tu vise une taille precise, fais tes encodages en constant quality plutot qu’en fixed bitrate. j’utilise generalement ces valeurs: 20 pour sauvegarde sur le NAS, 22 pour regarder sur le laptop, 23 pour regarder sur le smartphone (-crf 22 si tu persistes sur ffmpeg)
  • Ultrafast c’est une tres mauvaise idée si tu cherche a garder de la qualité. plus le preset est lent, meilleure sera la qualité/poids (en fonction du reglage)
  • Que tu comptes le faire a la main ou en script, Handbrake est effectivement une bonne idée, ca existe en GUI et CLI, ca permet d’inscruster/ajouter des sous titres, multipiste audio avec nettement moins de prise de tete

Pour mieux illustrer les conseils de Kzi, la commande ffmpeg à taper est:

ffmpeg.exe -i input.m2ts -c:v libx264 -crf 22 -vf scale=1280:720 output.mp4

Le preset par défaut (medium) est généralement suffisant. Regarde d’ailleurs pour voir à quel point ultrafast abime la qualité de la vidéo.

Si tu cherches à avoir des fichiers d’une taille précise sans perdre trop de qualité, vaut mieux encoder en 2 passes - mais pas de -crf dans ce mode, faut lui fournir un bitrate cible.

ffmpeg.exe -i input.m2ts -pass 1 -c:v libx264 -b:v 2500k -vf scale=1280:720 output.mp4 ffmpeg.exe -i input.m2ts -pass 2 -c:v libx264 -b:v 2500k -vf scale=1280:720 output.mp4

2500kbit/s devrait être suffisant pour garder assez de qualité, ça équivaut à environ 1,1go par heure de vidéo; compte donc un fichier final de 1,2-1,3go avec le flux audio.
Pour le calcul, c’est simple: taille_fichier = (bitrate * durée_en_secondes) / 8 donc bitrate = (8 * taille_fichier) / durée_en_secondes.

Si ça te gonfle, go Handbrake :stuck_out_tongue:.

Et mieux que Handbrake et son GUI pété, VidCoder. Meme moteur et plus de controle.

2 « J'aime »

Je teste tout ça, merci beaucoup pour les explications/conseils.

Ooooh, merci pour ce soft !

Attention quand même aux enregistrements freebox. Je ne sais plus quelle source (TNT ou ADSL, il me semble que c’est la TNT) utilise un format qui se ré-encode mal sur de gros fichiers. Je m’y suis cassé les dents sur le découpage / ré-encodage de la saison 2 de Real Humans par exemple.

Question subsidiaire: pourquoi ne pas réencoder en x265? le gain est non négligeable. Je suppose que ton périphérique de lecture ne le supporte pas encore?

Pour l’enregistrement, je passe par l’ADSL vu que le boitier Freebox TV est encore au chaud dans sa boite. Je ne passe pas encore en x265 parce que certaines de mes machines le supportent mal, notamment mon laptop sous Linux Mint.