当视频中没有音频流时,改变速度命令失败 - FFmpeg

9
我正在尝试通过以下命令更改不包含音频流的视频的速度。
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};

命令失败,指出视频没有音频流那么,我需要检查视频中是否存在音频流,还是在这种情况下有其他我可以做的事情?

3个回答

3

使用ffmpeg -i命令之前,您需要检查视频。您可以在vk.log中获取相关信息,解析后查看是否有音频。然后再运行正确的命令。


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}

感谢 @Mulvya!它不能工作,在 "0:a?" 处产生错误,错误是“不匹配任何流”。 - Lalit Sharma
好的,它可以在v2.8或更高版本中使用,或者在2015年7月以后的夜间构建中使用。 - Gyan
实际上我正在使用一个基于ffmpeg的库。详情请见链接 - Lalit Sharma

2

选项-map a只接受带有音频流的视频,有些视频没有音频。您需要使用-map 0。解决这两种情况的方法是使用?

 -map [a?]
< p > ? 告诉 ffmpeg 仅在流存在时映射该流。


感谢@phongvan,但这并不起作用,以下是我尝试的内容: 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}; - Lalit Sharma
你能试一下: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", "0:a?", "-b", "2097k", "-ab", "48000", "-ac", "2", "-ar", "22050", "-vcodec", "mpeg4", destinationFile}; 吗? - mdtuyen
那行不通。尝试使用 String[]{"-ss", lastTime, "-i", selectedVideoPath, "-t", now, "-filter:v", "setpts=0.5*PTS","-strict", "-2", videoPath}; - Abhishek T.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接