2016-08-09 105 views
2

Ich versuche, ein Video von ausgewählten Bildern von der Kommandozeile in androidErstellen von Video von ausgewählten Bildern mit ffmpeg über Kommandozeilen Android

mit this Projekt mit ffmpeg zu machen, wie meine Quelle im Video

zu machen versuchen, dies versucht der Befehl im Video

String[] ffmpegCommand = {ffmpegBin, 
      "-y", 
      "-qscale", 
      "1", 
      "-r", "" + frameRate, 
      "-i", image1.getAbsolutePath(), 
      "-t", "" + (((4) * 30) + 4), //"-s",heightwidth, 
      "-i", image2.getAbsolutePath(), 
      "-t", "" + (((4) * 30) + 4), //"-s",heightwidth, 
      "-i", image3.getAbsolutePath(), 
      "-t", "" + (((4) * 30) + 4), //"-s",heightwidth, 
      "-i", image4.getAbsolutePath(), 
      "-t", "" + (((4) * 30) + 4), //"-s",heightwidth, 
      "-vcodec", 
      "libx264", 
      "-s", 
      "640x480", 
      outputFile.getAbsolutePath()}; 

aber das Video erstellt zeigt nur erstes Bild und Video erstellt von weniger als eine Sekunde

0.123.516 zu schaffen

Was ist das Problem in dieser Aussage? und warum nur 1 Bild im Video gezeigt wird?

traurig über mein schlechtes Englisch

Antwort

1

Hier erstelle ich Video von 12 Sekunden aus 4 Bildern von jeweils 3 Sekunden mit Einblendeffekte.

Führen Sie unter Befehl und stellen Sie sicher, dass alle Bilder die gleiche Höhe Breite haben.

String strCommand = "ffmpeg -loop 1 -t 3 -i " + /sdcard/videokit/1.jpg + " -loop 1 -t 3 -i " + /sdcard/videokit/2.jpg + " -loop 1 -t 3 -i " + /sdcard/videokit/3.jpg + " -loop 1 -t 3 -i " + /sdcard/videokit/4.jpg + " -filter_complex [0:v]trim=duration=3,fade=t=out:st=2.5:d=0.5[v0];[1:v]trim=duration=3,fade=t=in:st=0:d=0.5,fade=t=out:st=2.5:d=0.5[v1];[2:v]trim=duration=3,fade=t=in:st=0:d=0.5,fade=t=out:st=2.5:d=0.5[v2];[3:v]trim=duration=3,fade=t=in:st=0:d=0.5,fade=t=out:st=2.5:d=0.5[v3];[v0][v1][v2][v3]concat=n=4:v=1:a=0,format=yuv420p[v] -map [v] -preset ultrafast " + /sdcard/videolit/output.mp4; 
+0

danke .. das hat für mich funktioniert ... –

+0

wie Cross-Fade, verblasst, Ausblenden, sind es noch mehr Übergänge in ffmpeg, die ich animiertes Video im zum Erstellen von Video mit Übergang zwischen den Bildern für Monate Dank im Voraus fest erstellen kann –

+0

Dies funktioniert perfekt ! Das Problem ist, dass es viel Zeit kostet (mehr als eine Minute!) Kennen Sie etwas außer der ultraschnellen Option? – Aracem

2

Dies ist der ffmpeg Befehl, den Sie in Ihre String-Array anpassen sollte:

ffmpeg -framerate 25 -t 124 -loop 1 -i image1 
     -framerate 25 -t 124 -loop 1 -i image2 
     -framerate 25 -t 124 -loop 1 -i image3 
     -framerate 25 -t 124 -loop 1 -i image4 
     -filter_complex "[0][1][2][3]concat=n=4" 
     -c:v libx264 -s 640x480 outputfile 

Regel ist, dass Eingabeoptionen (Framerate, t..etc) gehen vor der Eingabeeintrag.

Der Concat-Filter verbindet die Bildströme miteinander. Wenn sie unterschiedliche Größen haben, sollten Sie die Größe ändern, um sie gleich zu machen.

+0

danke für die Antwort aber es gibt mir Fehler auf ‚-filter_complex‘, dh „un erkannt Option‚Filter-Komplex‘ –

+0

Es ist ein Unterstrich, kein Bindestrich -' – Mulvya

+0

‚-filter_complex‘ filter_complex' nach Dies ist immer noch gibt mir den gleichen Fehler –