将 png 与 mp4 ffmpeg 合并缺少音频
merge png with mp4 ffmpeg missing audio
我使用ffmpeg来合并mp4和png,我使用两种方式:
使用命令
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;
输出文件缺少音频:
使用命令:
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;
=> 有音频但有些mp4文件无法与png文件合并
日志:流图“0:a”不匹配任何流。
我这里缺少什么命令?
首先,您需要使用ffmpeg查看mp4
信息。然后你将 select 命令与 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() {
}
});
您可以使用一条命令完成此操作:
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;
?
告诉 ffmpeg 只映射存在的流。
我使用ffmpeg来合并mp4和png,我使用两种方式:
使用命令
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;
输出文件缺少音频:
使用命令:
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;
=> 有音频但有些mp4文件无法与png文件合并 日志:流图“0:a”不匹配任何流。
我这里缺少什么命令?
首先,您需要使用ffmpeg查看mp4
信息。然后你将 select 命令与 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() {
}
});
您可以使用一条命令完成此操作:
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;
?
告诉 ffmpeg 只映射存在的流。