2016-09-20 128 views
0

我已经看到大量有关这些的线程,但似乎没有任何改变我的问题。FFmpeg音频Desync问题

目前在我的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

另一个编辑 当我删除的偏移量和持续时间的参数和使用copyts而是整个文件转换成MP4和音频同步。这个问题似乎在于偏移和持续时间,因为我之前尝试过使用这两个小册子,但它仍然是异步的。

当前

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

回答

1

在原来的命令(一个在顶部),以取代-c:a copy-c copy。你可以摆脱-async 1

+0

我试了一下,让你知道在小时内 –

+0

什么?这不是如何“接受”的作品 - 但不管 – gpasch

+0

如何?他回答我的问题大声笑。问题是复制音频流与视频完美。 –