android ffmpeg mp4 mit bitmaps erstellen (kein jpg)

1248
farzd

Auf meiner Android-App habe ich eine Reihe von Bitmaps, die mit dieser Methode generiert werden:

public Bitmap createFrame(int i) { Bitmap bitmap = Bitmap.createBitmap(800, 800, Bitmap.Config.ARGB_8888); . . return bitmap; } 

jetzt möchte ich wie folgt für den ffmpeg-Befehl zum Konvertieren aller Bitmaps in ein mp4-Video:

for (int i=0; i<500; i++) { Bitmap frame = frameBitmap(i); String cmd = "ffmpeg -y -i <<all frameBitmap">> ... libx264 ... output.mp4" } 

Wie verwende ich einen Befehl mit einer Reihe von Bitmaps?

1

1 Antwort auf die Frage

2
LordNeckbeard

Pipe als Eingabe

Wenn Ihre Bilder aus dem erzeugt werden können, was sie erzeugen, können Sie das Pipe-Protokoll verwenden. Beispiel zu lesen von stdin:

ffmpeg -framerate 10 -i pipe:0 -c:v libx264 -pix_fmt yuv420p -movflags +faststart output.mp4 

Alternativ können Sie verwenden pipe:oder einfach -die gleiche Sache zu tun.

Weitere Informationen finden Sie in der Dokumentation zum Pipe-Protokoll .

Gespeicherte Bilder als Eingabe

Wenn Sie eine Reihe von Bilddateien haben, wie img001.bmp, img002.bmpetc., können Sie:

ffmpeg -framerate 30 -i img%03d.bmp -c:v libx264 -pix_fmt yuv420p -movflags +faststart output.mp4 

Oder Sie können das Glob-Muster verwenden, das einen Platzhalter unterstützt:

ffmpeg -framerate 24 -pattern_type glob -i "*.bmp" -c:v libx264 -pix_fmt yuv420p -movflags +faststart output.mp4 

Weitere Informationen finden Sie in der Demuxer-Dokumentation der Image-Datei .