Comment puis-je convertir some.flv
ou some.avi
ou some.wmv
avec FFmpeg pour être sûr que cette vidéo sera lisible et recherchée dans JW Player?
Ceci est une réponse au dernier commentaire de votre part @abrahab.
Vous n'avez pas besoin de mp4box
un fichier pour pouvoir le diffuser en pseudo via nginx. Le module de diffusion en continu MP4 s’occupe de celui-ci quel que soit le positionnement des atomes de Moov (mp4box
décale l’atome de Moov au début du fichier).
Maintenant, pour l'erreur de serveur 500, utilisez-vous l'option "-frag" avec mp4box? Le module de diffusion en continu MP4 ne peut pas lire les fichiers MP4 fragmentés. Le bon usage de mp4box
pour le pseudo-streaming consiste à entrelacer les vidéos pour une meilleure recherche. Le transfert d'atomes de Moov est un avantage supplémentaire.
Je fais toujours cela pour mp4box
un fichier encodé en FFmpeg
MP4Box -add MyVideo.mp4 -isma Myvideo-box.mp4
Cela entrelace également le fichier MP4 par défaut en 500 millisecondes.
En règle générale, vous souhaitez créer une vidéo x264 dans un conteneur MP4. Cette option est supportée par pratiquement tous les appareils et navigateurs.
Ce qui suit devrait suffire. Assurez-vous de remplacer le nom d'entrée et les options CRF. Ce dernier définit la qualité, où les valeurs saines vont de 19 à 25 - plus bas signifie une meilleure qualité, mais aussi un débit plus élevé:
ffmpeg -i input.avi -c:v libx264 -crf 23 -c:a aac -movflags faststart output.mp4
Vous pouvez également utiliser Handbrake pour l’encodage si vous aimez la manière graphique.
faststart
Maintenant, ce que vous devez faire est de déplacer l'atome MOOV du conteneur MP4 vers le début. Cet atome (en substance, une unité de données dans le conteneur MP4) contiendra des métadonnées importantes sur les flux vidéo/audio eux-mêmes. -movflags faststart
devrait faire exactement cela.
Si votre version de FFmpeg ne dispose pas de cette option, envisagez une mise à niveau. Si vous ne pouvez pas mettre à niveau, vous pouvez obtenir le même résultat avec l’un des outils ci-dessous:
QTIndexSwapper , une application Adobe AIR
MP4Box , source libre et open source, exécutant une commande similaire à la suivante, vous permettant de modifier l'intervalle (ici, 500):
mp4box -inter 500 input.mp4
qt-faststart en Python , qui fonctionne partout où Python est installé.
qtfaststart input.mp4
C'est à peu près ça.
Maintenant, bien sûr, pour le streaming, vous voudrez peut-être contraindre le débit à rester dans certaines limites. Vous pouvez en savoir plus à ce sujet dans mon article de blog sur les méthodes de contrôle des taux .
Par exemple, en ajoutant -maxrate 2M -bufsize 2M
aux options de codage, vous plafonnez le codage à 2 Mbit/s, ce qui peut être suffisant pour une vidéo 720p. Le débit requis dépendra, bien entendu, de la complexité du contenu. Cela prend des essais et des erreurs.
Vous pouvez simplement convertir un fichier AVI ou MP4 non-streamable, également sans tout ré-encoder, en procédant comme suit:
ffmpeg -i INPUT.mp4 -c copy -movflags faststart STREAMABLE_OUTPUT.mp4
Il n'est pas nécessaire de ré-encoder quoi que ce soit, car seul l'atome de Moov doit être déplacé.