midi 파일의 메모로 변경되는 비디오를 만들고 싶습니다. 나는 midi를 녹음 한 후 wav로 출력하고있다.오디오 드리프트 문제입니다. 프로그래밍 방식으로 비디오 프레임 만들기 및 Java의 MIDI/오디오와 동기화
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를 사용하여 이미지를 가깝게 만들어야합니다. 그래도 여전히 적합하지 않습니다. 이 문제를 해결하는 방법에 대한 아이디어가 있습니까?
노트의 지속 시간은 일정합니까? – Mulvya
두 가지 다른 음표 지속 기간이 있습니다. 한 유형은 다른 음표 지속 기간의 두 배입니다. 하나는 666.667ms이고 더 긴 것들은 1333.334ms입니다 – user6688986