web-dev-qa-db-ja.com

android ffmpegビットマップでmp4を作成(jpgなし)

私のAndroidアプリでは、この方法で一連のビットマップを生成しています:

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

今私はすべてのビットマップを1つのmp4ビデオに変換するためのffmpegコマンドのためにこのようにしたいです:

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

一連のビットマップで1つのコマンドを使用する方法は?

1
farzd

入力としてのパイプ

画像を生成しているものから画像をパイプアウトできる場合は、パイププロトコルを使用できます。 stdinから読み取る例:

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

または、pipe:またはプレーン-を使用して同じことを行うこともできます。

詳細については、 パイププロトコルのドキュメント を参照してください。

入力として保存された画像

img001.bmpimg002.bmpなどの一連の画像ファイルがある場合は、次のものを使用できます。

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

または、ワイルドカードをサポートするglob patternを使用できます。

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

詳細については、 イメージファイルデマルチプレクサのドキュメント を参照してください。

2
llogan