Comment puis-je convertir some.flv
ou some.avi
ou some.wmv
avec FFmpeg pour être sûr que cette vidéo sera jouable et consultable dans JW Player?
la source
Comment puis-je convertir some.flv
ou some.avi
ou some.wmv
avec FFmpeg pour être sûr que cette vidéo sera jouable et consultable dans JW Player?
Ceci est une réponse au dernier commentaire de votre part @abrahab.
Vous n'avez pas besoin d' mp4box
un fichier pour pouvoir le pseudo streamer via nginx. Le module de streaming MP4 s'en charge indépendamment du positionnement des atomes moov ( mp4box
déplace l'atome moov au début du fichier).
Maintenant, pour l'erreur de serveur 500, utilisez-vous l'option "-frag" avec mp4box? Le module de streaming MP4 ne peut pas lire les fichiers MP4 fragmentés. Une bonne utilisation de la mp4box
pseudo-diffusion consiste à entrelacer les vidéos pour une meilleure recherche. Le déplacement des atomes de Moov est un avantage supplémentaire.
Je fais toujours ça sur mp4box
un fichier encodé FFmpeg
MP4Box -add MyVideo.mp4 -isma Myvideo-box.mp4
Cela entrelacera également le fichier MP4 en 500 millisecondes de morceaux par défaut.
MP4Box -isma -inter 500 Myvideo.mp4
H.264 en MP4
En règle générale, vous souhaitez créer une vidéo x264 dans un conteneur MP4. Cette option est prise en charge 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 varient de 19 à 25 - une valeur inférieure signifie une meilleure qualité, mais également un débit binaire plus élevé:
Vous pouvez également utiliser Handbrake pour l'encodage si vous aimez la méthode GUI.
Utiliser l'
faststart
optionMaintenant, ce que vous devez faire est de déplacer l' atome MOOV du conteneur MP4 au 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 FFmpeg ne dispose pas de cette option, envisagez la mise à niveau. Si vous ne pouvez pas mettre à niveau, vous pouvez réaliser la même chose avec l'un des outils ci-dessous:
QTIndexSwapper , une application Adobe AIR
MP4Box , gratuit et open source, exécutant une commande similaire à la suivante, où vous pouvez modifier l'intervalle (ici, 500):
qt-faststart en Python , qui fonctionne partout où Python est installé.
C'est à peu près ça.
Contrôle du débit / de la qualité
Maintenant, bien sûr, pour le streaming, vous pouvez en fait vouloir 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 d'encodage, vous limitez l'encodage à 2 Mbit / s, ce qui peut être suffisant pour la vidéo 720p. Le débit requis dépendra bien sûr de la complexité du contenu. Cela prend quelques essais et erreurs.la source
ffmpeg -i 1.flv -vcodec libx264 -f mp4 -an -g 1 -f mp4 -g 30 -level 3 new.mp4
alorsmp4box
et mp4 ne peut pas rechercher et nginx rapporter le500 internal server error
paramètre de démarrage plus que0
. lorsqu'il est codé en vidéo sans-vcoded libx264
(codeur mp4 par défaut) qualité! malade!) :( (désolé, maintenant, pas autorisé à voter, vous répondez)-movflags faststart
exactement ce dont j'avais besoinVous pouvez simplement convertir un AVI ou MP4 non streamable, également sans tout ré-encoder, en procédant comme suit:
Il n'est pas nécessaire de ré-encoder quoi que ce soit, car il suffit de déplacer l'atome moov.
la source
Vous pouvez essayer ceci avec ffmpeg:
la source
-acodec pcm_s16le
(erreur:)Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
. Une bonne raison, comme un projet IETF, pour laquelle choisir exactement ces paramètres semble également faire défaut.