Я пытаюсь разработать панель проигрывателя, которая работает в Animate cc и воспроизводит как видео, так и анимацию перед указанным видео на холсте html5.
Я хотел, чтобы это ускорило звук, потому что видео на экране будет сильно опережать, но оно воспроизводится с правильной скоростью. Итак, я попробовал это:
//Position the scrubber, handle press/release events for scrubber
this.addEventListener("tick", fl_MouseClickHandler.bind(this));
function fl_MouseClickHandler()
{
if(isDragging == false){
proportion = this.currentFrame/this.totalFrames;
if(Math.round(this.currentFrame/30) % 10 == 0){ // do this every 10 seconds
audioSync(proportion);
}
this.scrubber.x = scrubberStart + (proportion * barWidth);
}
else {
if (stage.mouseX > scrubberStart && stage.mouseX < (scrubberStart + barWidth)) {
proportion = (stage.mouseX-scrubberStart)/barWidth;
this.scrubber.x = stage.mouseX;
}
}
}
function audioSync(var p){
audioInstance.setPosition(p * audioInstance.duration);
//is there a better way to do this without it getting choppy?
//currently sounds like
//fo-o-o-d-d-d S-s-aaaaffttey-y-y when set to 2 seconds
//(it gets off that fast)
//it does those glitchy sounds for a few seconds when you increase the interval
//(if set to do it 10 seconds, ~3 seconds glitch, ~7 seconds normal)
}
Прямо сейчас это звучит как Daft Punk, когда они замедляют вокал, и он становится очень прерывистым. (см. с 0:00 до 1:30 "Alive 2007", трек 7, "лицом к лицу / короткое замыкание" (c) Daft Punk Legals, хороший пример).
Вот демо, где только рассинхронизация: http://mhardingfoodsafe.github.io/player-audio-messed-up/
Когда я пытаюсь сделать audioInstance.currentTime = video.currentTime;
, ничего не меняется, а когда я делаю video.currentTime = audioInstance.currentTime;
, я получаю сообщение об ошибке, в котором говорится, что он не может считывать значения, которые не являются конечными.
это тот, где он на самом деле делает то, что я описываю (а не то, что я хочу): http://mhardingfoodsafe.github.io/player-bar-v2/