合并png与mp4 ffmpeg缺少音频

时间:2015-11-02 08:00:59

标签: audio ffmpeg overlay mp4

我使用ffmpeg合并mp4和png,我用两种方式:

  1. 使用命令

    String cmd =" -y -i" + in.mp4 +" -i" + in.png +" -filter_complex [0:v] [1:v] overlay = 0:0 [out] -preset veryfast -map [out] -map 1:0 -map 0:0 -codec:a copy" + out.mp4;

  2. 输出文件缺少音频:

    1. 使用命令:

      String cmd =" -y -i" + in.mp4 +" -i" + in.png +" -filter_complex [0:v] [1:v] overlay = 0:0 [out] -preset veryfast -map [out] -map 0:a -codec:a copy" + out.mp4;

    2. =>有音频但有些mp4文件无法与png文件合并 记录:流地图' 0:a'不匹配流。

      这里缺少什么命令?

2 个答案:

答案 0 :(得分:2)

首先,您需要使用 ffmpeg 来检查mp4信息。然后,您将选择 0:a 或不是

的命令
            ffmpeg.execute(("-i " + filepath).split(" "), new ExecuteBinaryResponseHandler() {
                    boolean hasAudio = false;

                    @Override
                    public void onProgress(String s) {

                       if (s.matches("^\\s+Stream.+Audio.+")) {
                            hasAudio = true;
                        }
                    }

                    @Override
                    public void onFinish() {

                    }
                });

答案 1 :(得分:2)

您可以使用一个命令执行此操作:

redisClient.hget('users', function (err, str) {
    if (err) return console.error(err);

    var data = JSON.parse(str); // note this might throw an exception
});

String cmd = "-y -i " + in.mp4 + " -i " + in.png + " \ -filter_complex [0:v][1:v]overlay=0:0[out] -preset veryfast \ -map [out] -map 0:a? -codec:a copy " + out.mp4; teels ffmpeg仅映射流(如果存在)。