Joignez l'audio et l'image -> Sortie en vidéo à l'aide de FFmpeg

8

J'ai 1 image (jpg) et 1 fichier audio (MP3) et je voudrais le sortir sous forme de fichier vidéo (par exemple AVI).

Est-ce que quelqu'un sait comment utiliser FFMPEG pour joindre les deux? Je voudrais montrer l'image pendant la durée de l'audio.

Des idées n'importe qui?

user41559
la source
Quels
OS

Réponses:

6

Si vous êtes sous Windows, vous pouvez également le faire dans Windows Movie Maker ... si vous avez besoin d'instructions, veuillez laisser un commentaire

Pour FFmpeg, utilisez ceci

ffmpeg -loop_input -vframes 14490 -i imagine.jpg -i audio.mp3 -y -r 30 
    -b 2500k -acodec ac3 -ab 384k -vcodec mpeg4 result.mp4
  • vframes 14490 est le nombre d'images qui doivent être mises en boucle afin d'avoir une image continue pour tout le fichier audio.mp3

    Ex: pendant 8 minutes et 3 secondes ((8m x 60s + 3s) x 30fps = 14490 vf)

Ressource d' ici

subanki
la source
Salut Subanki - merci pour votre commentaire !! Je ne comprends pas cela cependant .. J'ai besoin de sortir un fichier vidéo à partir de l'audio et de l'image. Comment cela fait-il cela?
user41559
@nayrsllew Je viens de découvrir que le code ne fonctionne pas, désolé .. Eh bien, la chose de base est de le convertir en vidéo en utilisant ffmpeg -f image2 -i image% d.jpg video.mpg puis de rejoindre la vidéo et l'audio
subanki le
mis à jour ma réponse, c'était difficile mais ma recherche google d'une heure l'a trouvée, je suis heureux :)
subanki
La réponse est correcte, pourquoi le down -vote :(
subanki
Salut Cant do, pouvez-vous m'aider ici. La vidéo résultante est trop grande. J'ai besoin de la vidéo de la même taille de fichier mp3. Mon fichier image est très petit. J'ai également besoin de télécharger cette vidéo sur Youtube.
Parminder
7

Il existe un moyen beaucoup plus simple que ceux suggérés ici, qui ne nécessite pas de calculer le nombre d'images ou de saisir la longueur des fichiers individuels (particulièrement mieux pour le traitement par lots). Avec une version récente de ffmpeg, vous pouvez utiliser l' -shortestoption, qui arrête l'encodage à la fin du flux le plus court - dans ce cas, input.mp3 (puisque l'image bouclera pour toujours, elle a une longueur infinie):

ffmpeg -i input.mp3 -f image2 -loop 1 -r 2 -i input.jpg \
-shortest -c:a copy -c:v libx264 -crf 23 -preset veryfast output.mp4

Cela utilise 2 images par seconde pour l'image / vidéo, ce qui devrait être bien, mais vous pouvez le régler sur 25 plus standard si vous le souhaitez.

evilsoup
la source
5

subanki avait presque raison. La ligne de commande de travail est la suivante;

ffmpeg -y -loop 1 -i image.jpg -i audio.mp3 -r 30 -b:v 2500k -vframes 14490 -acodec libvo_aacenc -ab 160k result.mp4
-y

écraser les fichiers de sortie sans invite

-loop 1

L'option '-loop_input' est déconseillée. Utilisez -loop 1. Voir la documentation de ffmpeg .

-je

fichier (s) d'entrée

-r

Les images par seconde
pourraient également être exprimées comme suit: -r 30000/1001 donnant un fps de 29,97nnn

-b: v

bitrate vidéo; plus le nombre est élevé, meilleure est la qualité et plus la taille du fichier est grande.

-vframes

Comme expliqué ci-dessus; prendre le temps total de votre fichier audio en secondes (par exemple 00:02:41 (2 minutes 41 secondes) est égal à 161 secondes totales (2 x 60) + 41). Multipliez ensuite le nombre total de secondes par les images par seconde que vous avez spécifiées avec -r (par exemple 161 x 30 = 4830).

-vframes peut être remplacé par -t 161 (-t enregistrement de durée ou transcodage "durée" secondes d'audio / vidéo)

-acodec

Utilisez le codec audio correct pour le type de fichier que vous créez. Pour .mp4, il doit s'agir d'un format AAC. Le codec libvo_aacenc était le codec de codage correct pour mon système Windows 7.

-un B

bitrate audio

result.mp4

Il s'agit du nom du fichier de sortie. Il peut s'agir de n'importe quel nom de fichier légal pour votre système. L'extension aidera ffmpeg à déterminer le codec vidéo approprié si vous n'en spécifiez pas un à l'aide de -vcodec.

Jon Hall
la source
1

Ce script bash / cygwin simple qui encodera AUTOMATIQUEMENT tous les fichiers de l'extension $ AUDIO dans le répertoire en fichier vidéo 10FPS mp4 dans le répertoire avec l'image folder.jpg intégrée,

utile pour les téléchargements sur YouTube;)

AUDIO=m4a; 
$'\n'; for a in `ls -1 *.$AUDIO `; do ffmpeg -i $a &2> $a.info ; done;
cat '' > do.sh
IFS=$'\n'; 
for a in `ls -1 *.$AUDIO`; do D=`grep Duration $a.info | cut -d',' -f1 | cut -d' ' -f4 | cut -d'.' -f1 | head -n1 `; S=$(( $( echo $D | cut -d':' -f2 ) * 60 + 1 + ` echo $D | cut -d':' -f3  ` )) ; echo ffmpeg -loop_input -vframes $(( $S * 10 )) -i folder.jpg -i \"$a\" -y  -r 10 -b 2500k -ab 384k -vcodec mpeg4 \"$a.mp4\" >> do.sh;  done;
split -l5 do.sh
xa* &
user113368
la source
0

Téléchargez VirtualDub , puis procédez comme suit:

  1. Ouvrez l'image comme si vous ouvriez un fichier vidéo normal.

  2. Calculez la durée de l'audio en secondes et arrondissez-la à la seconde entière la plus proche (par exemple, 78,34 secondes deviennent 79 secondes). Cette valeur est désormais appelée x.

  3. Allez dans "vidéo> fréquence d'images" sélectionnez "changer en fréquence d'images (fps)" et entrez "1 / x" comme valeur. De plus, si vous souhaitez avoir une fréquence d'images normale dans le fichier résultant comme 25 ips, sélectionnez "Convertir en ips" et entrez la fréquence d'images souhaitée.

  4. Sélectionnez "vidéo> compression" et choisissez votre saveur préférée. Il se peut que vous deviez ajuster la taille de l'image avec le filtre de redimensionnement.

  5. Allez dans "audio> audio à partir d'un autre fichier" et sélectionnez-y votre audio. Si nécessaire, sélectionnez une compression pour l'audio.

  6. Enregistrez le fichier.

Source: stephanV

Ours grincheux
la source
Merci StephanV .. J'ai besoin d'utiliser FFMpeg mais c'est une bonne suggestion .. merci
user41559