Vous devez d'abord comprendre la différence entre l'utilisation des profils FFmpeg et les options de ligne de commande directe. -vpre
utilise un .ffpreset
fichier situé dans /usr/share/ffmpeg/
ou où ffmpeg a été installé. C'est une série de paires option = valeur , et dans votre cas, vous auriez dû le définir vous-même (au moins, je ne connais pas de baseline
préréglage livré avec ffmpeg).
Je recommanderais de ne pas utiliser de préréglages à moins que vous ne l'ayez créé vous-même et que vous sachiez à quoi servent les options de ligne de commande. J'utilise ffmpeg depuis des années maintenant, et je n'ai jamais utilisé de préréglages - je n'en ai jamais vraiment eu besoin.
Une ligne de commande typique pour générer une vidéo H.264 compatible avec la plupart des appareils serait:
ffmpeg -i <input> \
-c:v libx264 -crf 23 -profile:v baseline -level 3.0 -pix_fmt yuv420p \
-c:a aac -ac 2 -b:a 128k \
-movflags faststart \
output.mp4
Quelques notes:
H.264 / AAC est la meilleure combinaison pour une large prise en charge en HTML5. Les navigateurs qui n'ont pas de décodeurs H.264 auront cependant besoin d'une vidéo VP8 / Vorbis également. Pour certains exemples de ligne de commande, consultez cette réponse . Voir également la page de support du navigateur de Wikipedia pour d'autres codecs.
H.264 fonctionne également bien sur les appareils mobiles.
Les options -profile:v baseline
et -level 3.0
ne sont nécessaires que pour les anciens appareils mobiles qui ne peuvent pas gérer les fonctionnalités gourmandes en CPU du H.264. Vous pouvez généralement les laisser de côté ou les utiliser à la place -profile:v main
.
Le CRF définit la qualité (18–28 est une plage raisonnable, une valeur inférieure signifie une meilleure qualité). Vous pouvez bien sûr également utiliser un débit fixe avec -b:v 1000k
ou similaire. Choisissez un débit binaire correspondant à la résolution de la vidéo. Certains appareils de faible puissance peuvent ne pas être en mesure de gérer des débits binaires inutilement élevés.
L' -movflags faststart
option est essentielle pour le streaming, car elle déplace les métadonnées du conteneur au début du fichier au lieu de le laisser à la fin. Cela permettra à la lecture de démarrer immédiatement au lieu d'attendre que le fichier soit entièrement chargé.
Cependant, tout se résume à trouver le plus petit dénominateur commun pour tous les appareils que vous ciblez, ce qui pourrait ne pas toujours exister. Vous ne voudriez certainement pas utiliser un autre codec (c'est-à-dire pire ) que le H.264. En fait, il ne serait pas non plus judicieux de proposer des vidéos encodées en ligne de base aux clients qui peuvent décoder le profil principal ou élevé. Vous échangez la qualité contre une complexité de décodage réduite.
D'après mon expérience, les appareils Android peuvent très bien jouer à Baseline H.264 avec audio AAC-LC dans un conteneur MP4. Je n'ai jamais eu de problème avec ça. En fait, certains appareils peuvent également jouer des profils plus élevés, bien que ce ne soit pas officiellement pris en charge. iOS prend généralement également en charge Baseline H.264, mais vous pouvez certainement utiliser le profil principal sur certains appareils également. Voir cet article (qui est un peu dépassé) pour quelques directives.
Si des utilisateurs ont des problèmes de lecture, vous devez déterminer quelle vidéo est à l'origine des problèmes et obtenir plus de détails sur le matériel et les logiciels de lecture qu'ils utilisent. Ensuite, nous pourrions parler de dépannage de ce cas particulier.