【问题标题】:ffmpeg-cli-wrapper: Unable to merge image and audio (mp3) input to an video output (mp4)ffmpeg-cli-wrapper:无法将图像和音频 (mp3) 输入合并到视频输出 (mp4)
【发布时间】:2017-12-24 22:43:29
【问题描述】:

我想结合图像和音频文件来创建视频输出。 我可以从命令行做到这一点: ffmpeg -loop 1 -i /tmp/image.jpeg -i /tmp/audiot.mp3 -vf 'scale=320:trunc(ow/a/2)*2' -acodec libvo_aacenc -b:a 192k -shortest /tmp /output.mp4

但是当我尝试使用 ffmpeg-cli-wrapper java 实现相同的行为时,程序只是无限期地运行。 Raised issue on GitHub too.

我在网上找不到任何示例。如果有人知道如何使用相同或任何其他框架来实现此行为,请告诉我。 这是我的示例测试 java 程序。

        FFmpeg ffmpeg = new FFmpeg("/usr/bin/ffmpeg/ffmpeg");
        FFprobe ffprobe = new FFprobe("/usr/bin/ffprobe");


        FFmpegBuilder builder = new FFmpegBuilder()

                .setInput("/tmp/image.jpeg")// Filename, or a FFmpegProbeResult  
                .addInput("/tmp/audio.mp3")
                .addExtraArgs("-loop","1")

                  .overrideOutputFiles(true) // Override the output if it exists

                  .addOutput("/tmp/output.mp4")   // Filename for the destination
                    .setFormat("mp4")        // Format is inferred from filename, or can be set
                    //.setTargetSize(250_000)  // Aim for a 250KB file

                    //.disableSubtitle()       // No subtiles

                    //.setAudioChannels(1)         // Mono audio
                    .setAudioCodec("aac")        // using the aac codec
                    .setAudioSampleRate(48_000)  // at 48KHz
                    .setAudioBitRate(32768)      // at 32 kbit/s

                    .setVideoCodec("libx264")     // Video using x264
                    .setVideoFrameRate(24, 1)     // at 24 frames per second
                    .setVideoResolution(640, 480) // at 640x480 resolution
                    //.setComplexVideoFilter("scale=320:trunc(ow/a/2)*2")

                    .setStrict(FFmpegBuilder.Strict.EXPERIMENTAL) // Allow FFmpeg to use experimental specs
                    .done();

                FFmpegExecutor executor = new FFmpegExecutor(ffmpeg, ffprobe);

                // Run a one-pass encode
                executor.createJob(builder).run();

【问题讨论】:

    标签: ffmpeg


    【解决方案1】:

    您的示例命令和代码中的命令似乎不同。

    您的图像输入使用-loop 1 输入选项连续循环(或者至少我假设它正在应用,但很难说),但是您的代码缺少-shortest 输出选项导致命令无限期运行。

    【讨论】:

      猜你喜欢
      • 2021-12-27
      • 2016-10-19
      • 1970-01-01
      • 2021-05-25
      • 2019-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-11
      相关资源
      最近更新 更多