Я работаю в проекте, где мне нужно создать точный аудио редактор.
Я заметил, что Safari ведет себя странно при настройке currentTime на аудио. Похоже, что в зависимости от currentTime, где происходит скачок и куда, фактический момент времени может быть выключен даже на 2-3 секунды.
Я сделал скрипку JS, чтобы продемонстрировать проблему .
Соответствующие части кода следующие:
jump.addEventListener('click', function () {
audio.currentTime = jumpToVal;
});
jump2.addEventListener('click', function () {
audio.currentTime = Number.parseInt(jumpToVal) + Number.parseInt(jumpBufferVal);
audio.volume = 0;
setTimeout(function () {
audio.volume = 1;
audio.currentTime = jumpToVal;
}, jumpDelayVal)
});
Таким образом, в основном в этом примере происходит следующее: если попытаться перейти на 8 секунд в звуке после того, как точка пройдена, звук запускается за несколько секунд до этой точки. Если установить значение currentTime, например, на 8 секунд меньше этой точки и после задержки, переходящей в точку, оно воспроизводится в некоторой степени из правильной позиции.
Я хотел бы подчеркнуть, что, скорее всего, это просто совпадение, поскольку поведение меняется в зависимости от того, где и в какой момент времени установлен currentTime. С этой настройкой проблема яснее всего.
Сравните, например, с Chrome, чтобы услышать разницу.
Особенность заключается в том, что звук возвращает один и тот же currentTime, независимо от конечного результата. Другими словами, звук, кажется, «думает», что он находится в правильном положении, даже когда он явно не в этом.
Мои вопросы: почему Safari настолько неточен с currentTime и есть ли решение этой проблемы?
Safari версия 12.0 (14606.1.36.1.9).