我正在尝试通过以下命令
更改不包含音频流的视频的速度String[]{"ffmpeg", "-y", "-i", orginalFile, "-threads", "5", "-preset", "ultrafast", "-strict", "experimental", "-filter_complex", "[0:v]setpts=0.50*PTS[v];[0:a]atempo=2.0[a]", "-map", "[v]", "-map", "[a]", "-b", "2097k", "-ab", "48000", "-ac", "2", "-ar", "22050", "-vcodec", "mpeg4", destinationFile};
命令无法说明视频没有音频流。 那么,我是否需要检查视频中是否存在音频流,或者在这种情况下我能做些什么?
答案 0 :(得分:3)
您需要在运行命令之前检查视频(使用ffmpeg -i) 您将获得vk.log中的信息。 解析它,看看你是否有音频。 然后运行正确的命令。
答案 1 :(得分:2)
选项-map a
仅接受带有音频流的视频,有些视频没有音频。你需要使用-map 0
。两种情况的解决方案是使用?
:
-map [a?]
?
teels ffmpeg仅映射流(如果存在)。
答案 2 :(得分:2)
如果您使用特定于流的过滤链,则您应该能够处理所有文件 - 包含音频或不包含音频。
使用
String[]{"ffmpeg", "-y", "-i", originalFile, "-threads", "5",
"-map", "0:v", "-map", "0:a?",
"-vf setpts=0.50*PTS", "-vcodec", "mpeg4", "-preset", "ultrafast", "-b:v", "2097k",
"-af atempo=2.0", "-b:a", "48000", "-ac", "2", "-ar", "22050",
"-strict", "experimental", destinationFile}
答案 3 :(得分:0)
您可以尝试的一种解决方案是首先使用以下命令转换 String[]{"-ss", lastTime, "-i", selectedVideoPath, "-t", now, "-filter:v", "setpts=0.5*PTS","-strict", "-2", videoPath};
:
audio
然后转换try code or catch
并根据结果检查它是否执行audio
。如果merge audio
成功执行,则video
和video
保存已完成audio
没有{{1}}。
它可能不是最佳解决方案,但它应该有效。