web-dev-qa-db-fra.com

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

J'utilise actuellement un fichier de commandes qui (entre autres choses) 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 me sert bien depuis de nombreuses années, en produisant un fichier vidéo plus petit que l'original (bon lorsque vous n'avez que des appareils de 16 Go), assez beau et qui fonctionne sur pratiquement tous les iPod, iPad et iPhone que je mets.

Cependant, au fil du temps, handbrakecli a du mal à convertir de plus en plus de vidéos au point que je dois rechercher une alternative. Le fait que les journaux ne fournissent absolument aucune information sur les raisons pour lesquelles il s’est écrasé n’aide pas. Cette vidéo, par exemple, s'est écrasée à 71% lors de la conversion et il s'agit des 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 solution de rechange, mais tous les exemples que j'ai vus sur Internet ont un ou plusieurs des résultats suivants:

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

Existe-t-il une ligne de commande décente tout-en-un de ffmepg permettant à toute vidéo de fonctionner avec bonheur sur tous les appareils Apple tout en réduisant la taille du fichier?

Points bonus si cela réduit (et ne déforme pas) pas plus la vidéo au-delà de 720p.

22
Richard

Voici mon point de vue là-dessus. Je prends 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 changer:

  • -crf 23: Le paramètre de qualité constante. Valeur supérieure = moins de qualité, fichier plus petit. Lower = meilleure qualité, fichier plus volumineux. Les valeurs saines 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 un plus lent. 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 dépasse 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 celui de Lanczos car il est bien meilleur que celui par défaut.

28
Ely

C'est basique mais cela a fonctionné immédiatement pour moi sur un iPad 3

ffmpeg -i inputfile outputfile.m4v
0
yeeking