Quelle commande ffmpeg convertirait une vidéo pour iPad / iPhone / iPod?


24

J'utilise actuellement un fichier batch qui (entre autres) exécute la ligne de commande handbrakecli suivante pour convertir une vidéo:

HandBrakeCLI.exe -v0 --input "D:\input.mkv" --preset="Universal" --ipod-atom -t 1 --angle 1 --gain 0 --output="D:\output.mp4"

Cela m'a bien servi pendant de nombreuses années, en produisant un fichier vidéo qui est plus petit que l'original (bon quand vous n'avez que des appareils 16 Go), qui semble assez bon et fonctionne sur à peu près tous les iPod, iPad et iPhone sur lesquels je le mets.

Cependant, au fil du temps, handbrakecli a du mal à convertir de plus en plus de vidéos au point que je dois chercher une alternative. Ce n'est pas aidé par le fait que les journaux ne fournissent absolument aucune information sur la raison pour laquelle il s'est bloqué. Cette vidéo, par exemple, s'est écrasée à 71% pendant la conversion et ce sont les 4 dernières lignes:

AC3 Passthru requested and input codec is not compatible for track 2, using AC3 encoder
x264 [info]: using SAR=9593/9600
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
x264 [info]: profile Constrained Baseline, level 3.0

Pas très utile.

J'ai envisagé d'utiliser ffmpeg comme alternative, mais tous les exemples que j'ai vus sur Internet font une ou plusieurs des actions suivantes:

  1. Ne fonctionne pas (les options de ligne de commande ne sont pas reconnues) - commun!
  2. Résultat: un fichier plus volumineux que l'original - très courant!
  3. Déforme l'image, en particulier lorsqu'une taille vidéo inattendue est convertie (par exemple, PAL non grand écran)
  4. Supprimer l'audio
  5. Résultat: une vidéo que l'iPhone, l'iPod ou l'iPad ne lira pas

Existe-t-il une ligne de commande ffmepg polyvalente décente qui rendra n'importe quelle vidéo heureuse sur tous les appareils Apple et permettra de réduire la taille du fichier?

Des points bonus s'il rétrécit (mais ne déforme pas) toute vidéo sur 720p également.


Quelle est la dernière fois que vous avez mis à niveau votre frein à main?
Gene

Assez fréquemment dans l'espoir que le bug qui se bloque est corrigé. J'utilise actuellement 0.10.2 (2015060900) - MinGW x86_64.
Richard

J'avais une vidéo mp4 qui refusait de fonctionner sur iOS, et c'était la commande la plus courte que je pouvais conjurer qui l'a corrigée: ffmpeg -i broken_video.mp4 -pix_fmt yuv420p working_video.mp4
Bemmu

Réponses:


30

Voici mon point de vue là-dessus. Je prendrai l'iPhone 4 ou plus récent (y compris tous les iPad) comme cible: profil principal H.264, niveau 3.1

ffmpeg -i input.mp4 -vcodec libx264 -profile:v main -level 3.1 -preset medium -crf 23 -x264-params ref=4 -acodec copy -movflags +faststart output.mp4

Les valeurs que vous êtes libre de modifier:

  • -crf 23: La qualité constante. Valeur plus élevée = moins de qualité, fichier plus petit. Inférieur = meilleure qualité, fichier plus gros. Les valeurs raisonnables sont [18 - 24]
  • -preset medium: Si cela est trop lent pour vous, utilisez un préréglage plus rapide. Si vous en avez la patience, utilisez-en une plus lente. Voir ici pour plus d'informations.
  • -acodec copy: Essaie de copier la piste audio dans le conteneur MP4. S'il ne peut pas être copié, vous devrez le recoder en AAC / MP3 / AC3 ​​... par exemple-acodec libmp3lame

Si votre vidéo est supérieure à 720p, ajoutez ce qui suit après l'entrée:

-vf "scale=-2:720:flags=lanczos"

Cela réduira votre vidéo à 720p et conservera le rapport hauteur / largeur. L'algorithme de mise à l'échelle utilisé sera lanczos car il est bien meilleur que celui par défaut.


3
Vous pouvez utiliser à la -vf "scale=-2:720:flags=lanczos"place. L'ajout -movflags +faststartest recommandé si le fichier sera visualisé via un téléchargement progressif tel que dans un navigateur (et sinon l'option ne fait certainement pas de mal).
llogan

La version Zeranoe que j'utilise ne prend pas en charge x264-params. À moins de le construire moi-même, existe-t-il un moyen de contourner ce problème?
Richard

J'utilise moi-même un build Zeranoe et -x264-paramsfonctionne très bien. Êtes-vous sûr de ne rien avoir manqué? L'option est principalement une sécurité pour éviter d'avoir plus de 4 trames de référence qui pourraient ne pas être gérées par un décodeur plus ancien.
Ely

-acodec libmp3lamene fonctionne pas pour moi. Pour activer l'audio sur mon iPad Mini, j'ai reconstruit ffmpegavec une nonfreevariante et utilisé libfdk_aaccodé.
Vitaly S.

0

C'est basique mais ça a marché tout de suite pour moi sur un iPad 3

ffmpeg -i inputfile outputfile.m4v
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.