android ffmpeg cria mp4 com bitmaps (sem jpg)

1

na minha aplicação android, tenho séries de bitmaps gerados por este método:

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

agora eu quero assim para o comando ffmpeg para converter todos os bitmaps para um vídeo mp4:

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

como usar um comando com uma série de bitmaps?

    
por farzd 05.10.2017 / 17:48

1 resposta

2

Tubo como entrada

Se as suas imagens puderem ser canalizadas a partir do que estiver gerando, você poderá usar o protocolo de canalização. Exemplo para ler a partir de stdin:

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

Como alternativa, você pode usar pipe: ou plain - para fazer a mesma coisa.

Consulte a documentação do protocolo de canais para obter mais informações.

Imagens salvas como entrada

Se você tiver uma série de arquivos de imagem, como img001.bmp , img002.bmp etc., poderá usar:

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

Ou você pode usar o glob pattern que suporta um curinga:

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

Consulte a documentação do demuxer do arquivo de imagem para obter detalhes.

    
por 05.10.2017 / 19:05