通过命令行使用 FFMPEG 从选定图像创建视频 Android

creating video from selected images using FFMPEG through command Line Android

我正在尝试在 android

中使用 ffmpeg 从命令行中选择的图像制作视频

使用 this 项目作为我的来源我正在尝试制作视频

这是我正在尝试创建视频的命令

   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()};

但创建的视频仅显示第一张图片,并且视频创建时间不到一秒

这个语句有什么问题?为什么视频中只显示了一张图片?

抱歉我的英语不好

这是您应该适应您的字符串数组的 ffmpeg 命令:

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

规则是输入选项(帧率、t..等)在输入条目之前

concat 过滤器将图像流连接在一起。如果它们大小不同,您应该调整大小以使它们相同。

我在这里用 4 张图像创建 12 秒的视频,每张 3 秒,带有淡入淡出效果。

运行 下面的命令并确保所有图像具有相同的高度宽度。

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;