FFmpeg音频异步问题

时间:2016-09-20 15:04:00

标签: java audio cmd ffmpeg synchronization

我已经看到很多关于这些的线索,但似乎没有改变我的问题。

目前在我的Java程序中,我正在调用命令行并使用此命令。

ProcessBuilder builder = new 
                 ProcessBuilder(
                         "cmd.exe", "/c", "ffmpeg -y -i " + "\"" + inputFile + "\" -vcodec libx264 -async 1 -f mp4 " + " -ss " + offset + " -c copy -t " + duration + " " + "\"" + outputFile + "\"");

最初-vcodec,-async和-f mp4不在那里,但为了有希望纠正音频,他们已被放置在那里。

音频滞后约1-2秒,我想知道是否有人有任何想法?我也尝试手动设置仍未起作用的帧速率。

这是另一次失败的尝试。

ProcessBuilder builder = new 
                 ProcessBuilder(
                         "cmd.exe", "/c", "ffmpeg -y -i " + "\"" + inputFile + "\" -vcodec libx264 -async 1 -acodec libfaac -ab 128k -ac 2 -bt 5000k -b 5000k -r 59.940 -threads 0 -f mp4 " + " -ss " + offset + " -c copy -t " + duration + " " + "\"" + outputFile + "\"");

输入&输出文件以及偏移和持续时间都很好,请不要对此提出质疑。

快速编辑!

输入文件将始终具有扩展名.flv

另一个编辑 当我删除offset和duration参数并使用copyts时,整个文件将转换为mp4并同步音频。问题似乎在于偏移和持续时间,因为我之前尝试过两个副本,但它仍然是不同步的。

当前

ProcessBuilder builder = new 
                 ProcessBuilder(
                         "cmd.exe", "/c", "ffmpeg -y -i " + "\"" + inputFile + "\"" + " -c copy -copyts " + "\"" + outputFile + "\"");

1 个答案:

答案 0 :(得分:2)

在原始命令(顶部的命令)中,将-c copy替换为-c:a copy。你可以摆脱-async 1