У меня есть объект AudioFormat (возвращается из audioInputStream.getFormat()
). У меня есть метка времени (в миллисекундах), которую я хочу начать читать из соответствующего wav-файла. Как определить, сколько байтов следует читать/пропускать из AudioInputStream, чтобы добраться до соответствующего момента времени?Java - Определить количество байтов для чтения из файла волны, чтобы получить отметку времени
Я запутался с частотой кадров (и как он относится или не относится к частоте дискретизации).
Это то, что у меня есть до сих пор ... startPos - это метка времени в миллисекундах.
float skipTotalFrames = audioInputStream.getFormat().getFrameRate() * (startPos/1000);
long byteStartPos = (long) (audioInputStream.getFormat().getFrameSize() * skipTotalFrames);
Где я?
Редактировать: Мой код действительно работал, у меня были другие ошибки.
Частота кадров эквивалентно частоты дискретизации от того, что я понимаю. Размер рамки может быть больше размера выборки, хотя из-за того, что он учитывает несколько каналов. Кажется, это правильно? – CamHart
Имеет смысл ... легко подтверждается экспериментальной проверкой ... запустите это через несколько начальных позиций в ходе вторых испытаний Милли ... Расскажите нам свои результаты –