Audio 将png与mp4 ffmpeg合并缺少音频
我使用ffmpeg合并mp4和png,我使用两种方式:Audio 将png与mp4 ffmpeg合并缺少音频,audio,ffmpeg,overlay,mp4,Audio,Ffmpeg,Overlay,Mp4,我使用ffmpeg合并mp4和png,我使用两种方式: 使用命令 String cmd=“-y-i”+in.mp4+“-i”+in.png+”-filter_complex[0:v][1:v]overlay=0:0[out]-预设veryfast-map[out]-map 1:0-map 0:0-编解码器:一个副本“+out.mp4 输出文件缺少音频: 使用命令: String cmd = "-y -i " + in.mp4 + " -i " + in.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 0:a? -codec:a copy " + out.mp4;
String cmd=“-y-i”+in.mp4+“-i”+in.png+”-filter_complex[0:v][1:v]overlay=0:0[out]-预设veryfast-map[out]-映射0:a-编解码器:a副本“+out.mp4我的命令缺少什么 首先,您需要使用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() {
}
});
首先,您需要使用ffmpeg来检查
mp4
info。然后,您将选择是否使用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转换为仅映射存在的流。您可以通过一个命令执行此操作:
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转换为仅映射存在的流。您能给出ffprobe的完整结果吗?您应该显示每个命令的完整控制台输出/日志。否则就不可能提供答案。我在这里发现了问题。如果视频没有声音,我们无法为其放置映射0:a(日志:流映射“0:a”不匹配流)。现在我检查这个视频是否有音频,以使过滤器正确。但是它会占用更多的时间。您能给出ffprobe的完整结果吗?您应该显示每个命令的完整控制台输出/日志。否则就不可能提供答案。我在这里发现了问题。如果视频没有声音,我们无法为其放置映射0:a(日志:流映射“0:a”不匹配流)。现在我检查这个视频是否有音频,以使过滤器正确。但这会占用更多的时间。感谢您的回答,此解决方案将起作用,但我们必须使用ffmpeg运行两个命令。感谢您的回答,此解决方案将起作用,但我们必须使用ffmpeg运行两个命令。