管道作为输入

管道作为输入

在我的 android 应用程序上,我通过这种方法生成了一系列位图:

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

现在我想要像这样使用 ffmpeg 命令将所有位图转换为一个 mp4 视频:

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

如何对一系列位图使用一个命令?

答案1

管道作为输入

如果您的图像可以通过管道从生成图像的任何地方输出,则可以使用管道协议。从 stdin 读取的示例:

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

或者,您也可以使用pipe:或 plain-来做同样的事情。

查看管道协议文档了解更多信息。

保存图像作为输入

如果您有一系列图像文件,例如img001.bmpimg002.bmp等等,您可以使用:

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

或者您可以使用全局模式支持通配符:

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

查看图像文件解复用器文档了解详情。

相关内容