image - 创建视频表单图像和视频并以编程方式向其中添加音频| Java、Python、ffmpeg

标签 image video ffmpeg javacv

我想创建一个新视频( finalVideo.mp4 ):

  • 3 个图像文件 image1.jpg, image2.jpg, image3.jpg ,每张图片显示 4 秒
  • 1个视频文件(video1.mp4),持续约30秒,帧速率为30fps
  • 1 个音频文件(audio1.mp3)

  • 在最终视频( finalVideo.mp4 )中,我希望音频( audio1.mp3 )仅在图像存在时播放,而视频的( video1.mp4 )音频在视频存在时播放。
    例如:
    最终视频 (finalVideo.mp4) 包含image1.jpg ,video1.mp4 ,image2.jpgimage3.jpg (为了)。音频 ( audio1.mp3 ) 应播放前 4 秒,然后是视频 ( video1.mp4 ) 音频接下来的 30 秒,然后是音频 ( audio1.mp3 ) 在接下来的 8 (4*2) 秒。
    请让我知道如何以编程方式执行此操作。我希望使用 Java (JavaCV) 或 Python (OpenCV) 来解决这个问题。但是没有编程语言限制,答案可以是任何语言。

    编辑 1
    这是我做这项工作的尝试:
    String ffmpeg = Loader.load(org.bytedeco.ffmpeg.ffmpeg.class);
            ProcessBuilder processBuilder = new ProcessBuilder(
                    ffmpeg,
                    "-loop", "1",
                    "-framerate", "30",
                    "-t", "4",
                    "-i", "image1.jpg",
                    "-i", "video1.mp4",
                    "-loop", "1",
                    "-framerate", "30",
                    "-t", "4",
                    "-i", "image2.jpg",
                    "-loop", "1",
                    "-framerate", "30",
                    "-t", "4",
                    "-i", "image3.jpg",
                    "-filter_complex", "[0][1][2][3]concat=n=4:v=1:a=0",
                    "finalVideo.mp4"
            );
            processBuilder.inheritIO().start().waitFor();
    
    上面的代码只解决了没有音频的视频创建部分。如上所述,请告诉我如何在此视频中添加音频。

    最佳答案

    您可以对音频执行相同操作,使用 -ss-t输入选项来控制剪辑它的位置。

    String ffmpeg = Loader.load(org.bytedeco.ffmpeg.ffmpeg.class);
            ProcessBuilder processBuilder = new ProcessBuilder(
                    ffmpeg,
                    "-loop", "1",
                    "-framerate", "30",
                    "-t", "4",
                    "-i", "image1.jpg",
                    "-i", "video1.mp4",
                    "-loop", "1",
                    "-framerate", "30",
                    "-t", "4",
                    "-i", "image2.jpg",
                    "-loop", "1",
                    "-framerate", "30",
                    "-t", "4",
                    "-i", "image3.jpg",
                    "-t" 4, "-i", "audio1.mp3",
                    "-ss" 4, "-t", 8, "audio1.mp3",
                    "-filter_complex", 
                    "[0][1:v][2][[3]concat=n=4:v=1:a=0;[4][1:a][5]concat=n=3:v=0:a=1;",
                    "finalVideo.mp4"
            );
            processBuilder.inheritIO().start().waitFor();
    
    (如果您可以两次使用相同的输入文件,则不是 100%,但这应该可以。)

    关于image - 创建视频表单图像和视频并以编程方式向其中添加音频| Java、Python、ffmpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71162972/

    相关文章:

    java - 如何向 JPanel 添加图像?

    video - H264有什么缺点?

    video - HLS - ffmpeg 失败,无法为输出文件 #0 写入 header (编解码器参数不正确?): No such file or directory

    java - 在同一帧上重新计算直方图并使用 JFreechart 重新绘制

    java - 是否可以在单个 Rest 服务调用中检索 Image 和 JsonObject?

    java - 使用 RGB 值比较两个图像。 ( java )

    Python:从视频中截取屏幕截图

    ios - 视频无法在 iPhone 上播放

    video - FFmpeg filter_complex ass 字幕和水印不能一起工作

    带有级别前缀的 FFmpeg 日志级别