Convertissez la vidéo mkv / h264 afin qu'elle puisse être jouée sur un téléphone Sony Ericsson «à mi-gamme». (Utilisant Ubuntu)

Comme une petite expérience, je pense à convertir des vidéos / films / séries télévisées en un format qui pourrait être jouable sur mon K850, mais pour être un peu plus générique dans cette question, disons "téléphone de gamme Sony Ericsson" puisque tous Plus ou moins se comportent de la même manière et a la même résolution d'écran (240 x 320).

Je recherche des outils basés sur des lignes de commande (pour Ubuntu), car je pense écrire un script "convertir et déplacer" plus tard s'il réussit.

Beaucoup de la vidéo que j'ai est encodée dans mkv / h264, mais comme cela ne prend pas en charge le téléphone, je suppose que j'ai besoin de la convertir en une vidéo mp4 / mpeg4 basse qualité.

Après un googling, il semble qu'un bon candidat pour le travail est ffmpeg , mais cela semble être un outil très polyvalent avec beaucoup de tours de magie.

Suis-je sur la bonne voie? Et si oui, comment puis-je utiliser ffmpeg pour faire cela?

Merci Johan


Mise à jour : Après avoir plaqué un peu avec ffmeg, j'ai remarqué qu'il n'utilise que 1 de mes 4 noyaux, de sorte que le transcodage prend une éternité. J'ai trouvé un arg appelé – des termes, mais cela n'a pas beaucoup changé, peut-être que j'ai mal compris.

J'ai également constaté que quelque chose comme ça joue dans le téléphone.

ffmpeg -i Mythbusters\ S1D1_1.mkv -threads 4 -t 180 -vcodec mpeg4 -r 15 -s 320x240 Mythbusters\ S1D1_1_mini.mp4 

Il était possible d'utiliser 3gp / h263, mais la qualité était vraiment inutile.

 ffmpeg -i Mythbusters\ S1D1_1.mkv -t 180 -vcodec h263 -acodec libfaac -s cif Mythbusters\ S1D1_1_cif.3gp 

Et il semble que mp4 / h264 est également possible et le résultat est correct, grâce à cette question , celui-ci semble utiliser plus d'un noyau ainsi, donc c'était un peu plus rapide pour moi.

 ffmpeg -i Mythbusters_S1D1_1.mkv -t 180 -acodec libfaac -ab 60k -s 320x240 -vcodec libx264 -b 500k -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -flags2 +mixed_refs -me_method umh -subq 6 -trellis 1 -refs 5 -coder 0 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 500k -maxrate 768k -bufsize 2M -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 13 -threads 0 -f mp4 Mythbusters_S1D1_1_qvga.mp4 

Mise à jour : J'ai essayé d'utiliser HandBrakeCLI et il ne s'agit pas de créer un nouveau fichier qui semble être le même que celui créé avec ffmpeg avec quelque chose comme ça.

 HandBrakeCLI -i Mythbusters_S1D1_1.mkv --size 100 -E faac -B 60 --maxHeight 240 -r 15 -e x264 -o Mythbusters_S1D1_1_hand.mp4 

Mais celui-là n'a pas joué au téléphone …


Je l'ai trouvé dans le manuel officiel:

Si vous transférez des clips vidéo à l'aide d'un autre programme que Media Go ™, nous vous recommandons de sélectionner la vidéo de profil H.264 Baseline, jusqu'à QVGA à 30 fps, VBR 384 kbps (max 768 kps) avec AAC + audio à 128 kbps (max. 255 kbps ), 48 kHz et audio stéréo au format de fichier mp4.

Donc, l'idée d'utiliser H264 semble être correcte.

Pourquoi ne pas essayer Handbrake ? Il est disponible pour Linux, Mac OS et Windows et dispose également d'une interface de ligne de commande, si vous le souhaitez.

Voici un guide de la CLI Handbrake.

Je ne peux pas l'améliorer mieux que cet exemple de ffmpeg:

Ffmpeg -i Star_Wars.mkv -acodec libfaac -ab 60k -s 320×240 -vcodec libx264 -b 500k -flags + boucle -cmp + chroma -partitions + parti4x4 + partp8x8 + partb8x8 -flags2 + mixed_refs -m e_method umh -subq 6 -trellis 1 -refs 5 -coder 0 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 500k -maxrate 768k -bufsize 2M -qcomp 0 .6 -qmin 10 -qmax 51 -qdiff 4-niveau 13 -threads 0 -f mp4 Star_Wars.mp4

Cela convertit un épisode de cinéma 50min (4: 3) en un fichier de 70Mb (700Mb avant)

Et un film 2h (16: 9) dans un fichier 470Mb (était 1700Mb avant)