Audio und Bild verbinden -> Ausgabe als Video mit FFmpeg

11370
user41559

Ich habe 1 Bild (jpg) und 1 Audiodatei (MP3) und möchte diese als Videodatei ausgeben (zB AVI).

Kann jemand FFMPEG verwenden, um sich den beiden anzuschließen? Ich möchte das Bild für die Dauer des Audios zeigen.

Irgendwelche Ideen?

8
Welche Os verwenden Sie? subanki vor 13 Jahren 0

5 Antworten auf die Frage

7
evilsoup

Es gibt einen viel einfacheren Weg als die hier vorgeschlagenen. Es ist nicht erforderlich, die Anzahl der Frames zu berechnen oder die Länge der einzelnen Dateien einzugeben (insbesondere für die Stapelverarbeitung). Bei einer neueren Version von ffmpeg können Sie die -shortestOption verwenden, die die Codierung stoppt, wenn der kürzeste Stream endet. In diesem Fall input.mp3 (da das Bild für immer in einer Schleife dargestellt wird, hat es unendlich lange Länge):

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 

Dies verwendet 2 Bilder pro Sekunde für das Bild / Video, was in Ordnung sein sollte. Sie können jedoch einen Standardwert von 25 festlegen, wenn Sie möchten.

https://stackoverflow.com/questions/48141471/create-video-from-images-and-audio-mit-varying-image-durations-using-ffmpeg Muhammad Umer vor 6 Jahren 0
5
subanki

Wenn Sie sich in Windows befinden, können Sie dies auch in Windows Movie Maker tun ... Wenn Sie Anweisungen benötigen, hinterlassen Sie bitte einen Kommentar

Verwenden Sie dies für FFmpeg

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 ist die Anzahl der Frames, die wiederholt werden sollen, um ein kontinuierliches Bild für die gesamte Datei audio.mp3 zu erhalten

    Beispiel: Für 8 Minuten und 3 Sekunden ((8 m × 60 s + 3 s) x 30 Bilder pro Sekunde = 14490 vf)

Ressource von hier aus

Hallo Subanki - danke für deinen Kommentar !! Ich verstehe das nicht ... Ich muss eine Videodatei aus dem Audio und Bild ausgeben. Wie macht das das? user41559 vor 13 Jahren 0
@nayrsllew Ich habe gerade herausgefunden, dass Code nicht funktioniert, sorry. Nun, die grundlegende Sache ist die Konvertierung in ein Video mit ffmpeg -f image2 -i image% d.jpg video.mpg. Dann fügen Sie Video und Audio hinzu subanki vor 13 Jahren 0
Meine Antwort wurde aktualisiert, es war hart, aber meine 1-stündige Google-Suche hat es gefunden. Ich bin glücklich :) subanki vor 13 Jahren 0
Die Antwort ist richtig, warum die Abwärtsstimme :( subanki vor 13 Jahren 0
Hi Cant, kannst du mir hier helfen. Das resultierende Video ist zu groß. Ich brauche das Video in gleicher Größe von MP3-Dateien. Meine Bilddatei ist sehr klein. Ich muss dieses Video auch auf Youtube hochladen. Parminder vor 12 Jahren 0
@Parminder Es ist unmöglich, mit einer AVI-Codierung dieselbe Größe zu erhalten, es sei denn, Sie komprimieren die MP3-Datei weiter. Obwohl klein, wird Ihr Bild viele Male multipliziert, um die Länge des Songs zu erfüllen clabacchio vor 12 Jahren 0
https://stackoverflow.com/questions/48141471/create-video-from-images-and-audio-mit-varying-image-durations-using-ffmpeg Muhammad Umer vor 6 Jahren 0
5
Jon Hall

subanki almost had it right. The working command line is as follows;

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

overwrite output files without prompting

-loop 1

The option ‘-loop_input’ is deprecated use -loop 1. See ffmpeg documentation.

-i

input file(s)

-r

Frames Per Second
Could also be expressed as: -r 30000/1001 giving a fps of 29.97nnn

-b:v

video bit rate; the higher the number, the better the quality and the larger the file size.

-vframes

As explained above; take the total time of your audio file in seconds (e.g. 00:02:41 (2 minutes 41 seconds) equals 161 total seconds (2 x 60) + 41). Then multiply the total seconds by the Frames Per Second that you specified with -r (e.g. 161 x 30 = 4830).

-vframes can be replaced with -t 161 (-t duration record or transcode “duration” seconds of audio/video)

-acodec

Use the correct audio codec for the type of file you are creating. For .mp4 it should be an AAC format. The codec libvo_aacenc was the correct encoding codec for my Windows 7 system.

-ab

audio bit rate

result.mp4

This is the name of the output file. It can be any legal file name for your system. The extension will help ffmpeg determin the proper video codec if you do not specify one using -vcodec.

1
user113368

Dieses einfache bash / cygwin-Skript, das AUTOMAGICALLY alle Dateien der $ AUDIO-Erweiterung im Verzeichnis in eine 10FPS-MP4-Videodatei im Verzeichnis mit dem Ordner folder.jpg kodiert.

nützlich für YouTube-Uploads;)

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* & 
0
Grumpy ol' Bear

Laden Sie VirtualDub herunter und tun Sie es dann:

  1. Öffnen Sie das Bild wie eine normale Videodatei.

  2. Berechnen Sie die Dauer des Audios in Sekunden und runden Sie es auf die nächste ganze Sekunde auf (z. B. 78,34 Sekunden werden 79 Sekunden). Dieser Wert wird von nun an x ​​genannt.

  3. Gehen Sie zu "Video> Bildrate", wählen Sie "Bildrate ändern (fps)" und geben Sie "1 / x" als Wert ein. Wenn Sie in der resultierenden Datei eine normale Bildrate von 25 fps haben möchten, wählen Sie "In fps konvertieren" und geben Sie dort die gewünschte Bildrate ein.

  4. Wählen Sie "Video> Komprimierung" und wählen Sie Ihren bevorzugten Geschmack aus. Es kann sein, dass Sie die Größe des Bildes mit dem Größenänderungsfilter anpassen müssen.

  5. Gehen Sie zu "Audio> Audio aus anderer Datei" und wählen Sie dort Ihr Audio aus. Wählen Sie bei Bedarf eine Komprimierung für das Audio aus.

  6. Speicher die Datei.

Quelle: stephanV

Danke StephanV .. Ich muss FFMpeg verwenden, aber das ist ein guter Vorschlag. Danke user41559 vor 13 Jahren 0