Convertir Mp4 en Mp3 avec miniature

8

Je suis capable de convertir un mp4 en mp3 en ffmpeg, mais je ne sais pas comment ajouter une miniature de la vidéo.

Je l'ai actuellement pour convertir de mp4 en mp3

ffmpeg -i video.mp4 -acodec libmp3lame -metadata title=video -b:a 256 -f input.mp3

Dois-je alors exécuter à nouveau ffmpeg avec cette commande?

ffmpeg -i input.mp3 -i cover.jpg -map_metadata 0 -map 0 -map 1 output.mp3

ou existe-t-il un moyen d'utiliser des filtres complexes pour réaliser cette opération?

Je sais que cela fonctionne pour FLV mais cela ne semble pas fonctionner pour mp4

ffmpeg -i video.flv -i cover.jpg -map 0:a -map 1 -c:v copy -metadata title=video -b:a 256k out.mp3
nadermx
la source
Voulez-vous vraiment que la conversion définisse automatiquement la miniature? Sinon, vous pouvez le changer manuellement, mais je ne sais pas si vous le souhaitez. Si vous pouvez le faire avec FLV mais pas avec MP4, je ferais simplement un script qui exécute les deux commandes.
RamonRobben
@RamonRobben J'essaie d'éviter d'avoir à exécuter ffmpeg deux fois
nadermx
vous pouvez essayer quelque chose comme ceci ffmpeg -i in.mp4 -i test.png -map 0: 0 -map 1: 0 -c copie -id3v2_version 3 -metadata: s: v title = "Album cover" -metadata: s: v comment = "Cover (Front)" out.mp3 Je télécharge moi-même ffmpeg pour commencer à tester avec.
RamonRobben

Réponses:

3

Meilleure réponse , avec explication, incorporant des suggestions intelligentes de slhck et Mulvya, dépourvues de paramètres non essentiels.

ffmpeg -i video.mp4 -i cover.jpg -acodec libmp3lame -b:a 256k -c:v copy -map 0:a:0 -map 1:v:0 output.mp3

ffmpeg outil de manipulation audio / vidéo: déjà sélectionné par l'OP, il est particulièrement adapté à ce métier.

-i video.mp4 premier fichier d'entrée: une vidéo avec de l'audio que nous voulons extraire.

-i cover.jpg deuxième fichier d'entrée, une image que nous voulons afficher lors de la lecture du fichier audio résultant.

-acodec libmp3lame nous voulons créer un fichier .mp3, en utilisant l'encodeur LAME.

-b:a 256kcela définit le débit binaire de la piste audio à 256 Ko / s constants. Une option plus intelligente serait d'encoder avec un débit binaire variable, en spécifiant le paramètre de qualité : -q:a 0demande la qualité maximale, tout en -q:a 4représentant souvent un bon compromis entre la qualité audio perçue et le débit binaire (et donc la taille du fichier).

-c:v copycela indique que le flux vidéo (l'image .jpg) ne doit pas être réencodé mais doit être copié tel quel. Ceci est utile pour éviter un traitement inutile et une perte potentielle de qualité lors du réencodage dans un format avec perte. Dans notre cas, sans ce paramètre, l'image serait décodée de .jpg et encodée en .png, qui est apparemment le format natif qui est choisi par défaut. Cela ne représenterait pas une perte de qualité car .png est lossles, mais le plus souvent, la taille du fichier augmentera, car le .jpg (avec perte) offre généralement un meilleur taux de compression.

-map 0:a:0cela sélectionne le flux à utiliser dans le premier 0:fichier d'entrée ( ): il doit être le premier :0flux ( a) audio ( ) qu'il contient.

-map 1:v:0cela sélectionne le premier ( :0) vflux vidéo ( ) du deuxième ( 1:) fichier d'entrée.

output.mp3 le nom de ce paramètre a été judicieusement choisi afin de suggérer déjà qu'il doit s'agir du nom à donner au fichier audio de sortie (.mp3) avec l'image incorporée que nous voulons créer.

Réponse originale

Cela crée un fichier audio (.mp3) avec une image statique en assemblant une vidéo (.mp4) et une image (.jpg) de mon mariage:

ffmpeg -i video.mp4 -i cover.jpg -acodec libmp3lame -metadata title=video -b:a 256k -map_metadata 0 -map 0:1 -map 1 output.mp3

Voir la documentation de ffmpeg sur la sélection des flux d'entrée avec -map, qui est l'option pertinente ici.

J'ai d'abord exécuté la commande avec simplement -map 0 -map 1et obtenu ces informations:

Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> png (native))
  Stream #0:1 -> #0:1 (aac (native) -> mp3 (libmp3lame))
  Stream #1:0 -> #0:2 (mjpeg (native) -> png (native))

Ainsi, je savais que je voulais un flux 1(audio aac) à partir du fichier qui a un numéro d'index 0, c'est-à-dire le fichier vidéo; il fallait donc le sélectionner explicitement avec -map 0:1 -map 1.

simlev
la source
J'ai essayé, mais ça me donne Stream map '0:1' matches no streams. To ignore this, add a trailing '?' to the map.
nadermx
Exécutez-le avec ´-map 0 -map 1´ et voyez quels sont les flux disponibles.
simlev
Stream mapping: Stream #0:0 -> #0:0 (aac (native) -> mp3 (libmp3lame)) Stream #1:0 -> #0:1 (mjpeg (native) -> png (native))
nadermx
1
@nadermx Vous pouvez -map 0:a:0 -map 1:v:0sélectionner respectivement les premiers flux audio et vidéo des premier et deuxième fichiers.
slhck
1
Évitez d'encoder l'entrée d'image, en particulier avec JPG. -c:v copy.
Gyan
2

vous pouvez utiliser vlc media player -

Étape 1: Ouvrez le VLC et sélectionnez «Média». Cliquez sur convertir / enregistrer.

Étape 2: Dans la fenêtre suivante qui apparaît, sélectionnez «ajouter» et choisissez le fichier vidéo (MP4) à convertir.

Étape 3: Ensuite, cliquez sur la flèche vers le bas sur le "Convertir / Enregistrer" puis cliquez sur "Convertir".

Étape 4: Dans la fenêtre suivante qui apparaît, assurez-vous que le bouton «Convertir» est sélectionné. Continuez à choisir le type de fichier audio que vous souhaitez créer. Dans notre cas, son fichier MP3 que nous convertissons.

Étape 5: Choisissez une destination de sortie, puis appuyez sur «Démarrer». Le VLC commencera alors la conversion.

pour ajouter une vignette, vous pouvez vous référer à ce lien (très bien expliqué).

AjaiVeer Singh Sandhu
la source