gpt4 book ai didi

java - 音频漂移问题。以编程方式创建视频帧并与 java 中的 midi/音频同步

转载 作者:行者123 更新时间:2023-12-02 12:17:18 25 4
gpt4 key购买 nike

我想创建一个更改为 MIDI 文件上的注释的视频。我正在录制 MIDI,然后将其输出为 wav。

在java中,我读取midi文件,根据演奏的音符创建图像。我正在计算音符之间的时间,并使用它来确定使用以下代码的帧数:

    for(int i = 0; i < noteImages.size(); i++) {
for(int j = 0; j < frameRate * (noteLengths.get(i) / 1000); j++) {
videoFrames.add(noteImages.get(i));
frameCount++;
}
}

然后,我使用 ffmpeg 使用以下命令从带有音频的图像创建视频:

ffmpeg -r 60 -f image2 -i pic%05d.png -itsoffset 3 -i audio.wav -c:v libx264 -c:a aac -pix_fmt yuv420p -crf 23 -r 24 -shortest -y output.mp4 

音频开始时正常,然后逐渐不同步。如果我在创建图像时使用更高的 fps,则效果不太明显,但我需要至少使用 300fps 才能使其接近,但它仍然不太正确。关于如何纠正这个问题有什么想法吗?

最佳答案

除以 1000 将导致舍入错误,除非长度已经是 1000 的倍数。

您必须仅在计算的最后一步进行舍入(以便误差始终小于一帧):

j < (frameRate * noteLengths.get(i)) / 1000

如果值可能大于 2×109,请使用乘法。

关于java - 音频漂移问题。以编程方式创建视频帧并与 java 中的 midi/音频同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46070456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com