Javascript 是否有更好的方法将音频与视频同步(不只是将其放入视频本身)?

Javascript 是否有更好的方法将音频与视频同步(不只是将其放入视频本身)?,javascript,html,audio,animate-cc,Javascript,Html,Audio,Animate Cc,我正在尝试开发一个在animate cc中工作的播放器条,在html5画布上播放视频和前面的动画 我希望它能加快音频播放速度,因为屏幕上的视频会非常快,但播放速度是正确的。所以我试了一下: //Position the scrubber, handle press/release events for scrubber this.addEventListener("tick", fl_MouseClickHandler.bind(this)); function fl_MouseClickHan

我正在尝试开发一个在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)
}
//定位洗涤器,处理洗涤器的按下/释放事件
this.addEventListener(“tick”,fl_MouseClickHandler.bind(this));
函数fl_MouseClickHandler()
{
如果(IsDraging==false){
比例=this.currentFrame/this.totalFrames;
如果(Math.round(this.currentFrame/30)%10==0){//每10秒执行一次
音频同步(比例);
}
this.scriber.x=洗涤器启动+(比例*条形宽度);
}
否则{
如果(stage.mouseX>scriberstart&&stage.mouseX<(scriberstart+barWidth)){
比例=(stage.mouseX洗涤器启动)/barWidth;
this.scriber.x=stage.mouseX;
}
}
}
功能音频同步(var p){
audioInstance.setPosition(p*audioInstance.duration);
//有没有更好的方法来避免颠簸?
//现在听起来像
//fo-o-o-d-d S-S-aaaaffttey-y-y设置为2秒时
//(它下得那么快)
//当你增加时间间隔时,它会在几秒钟内发出这些刺耳的声音
//(如果设置为10秒,则约3秒出现故障,约7秒正常)
}
现在,当他们放慢声音时,听起来有点像愚蠢的朋克,而且声音变得很起伏。(请参阅《2007年活着》第7轨“面对面/短路”(c)愚蠢的朋克法律,了解一个很好的例子)的0:00到1:30

以下是仅不同步的演示:

当我尝试执行
audioInstance.currentTime=video.currentTime无任何更改
当我做
video.currentTime=audioInstance.currentTime我收到一个错误,说它无法读取非有限值


这是一个它实际上正在做我所描述的事情(不是我想要的):

发现更容易的方法是确保所有动画都在一个有音频的视频中,这样它就不那么复杂并且保持同步

原因:

  • 使用html5画布时,视频比animate cc更好地跟踪同步

  • 只添加视频控件比同时添加帧、音频和视频更容易

  • 在尝试通过多种不同类型的internet连接和设备实现时,不太容易出错


基本上是一样的,除了音频同步功能。只需确保场景有足够的帧与您设置的fps下的视频长度相匹配。

可能的帮助:我刚刚尝试过这样做,但出于某种原因,它不喜欢这样做。他们仍然以不同的速度比赛。(在“滴答声”侦听器和滴答声侦听器中的audioSync()中尝试过,但超出了“每10秒执行一次”的条件):/您是否尝试过将其反转以便将视频同步到音频?我真的帮不上忙,因为我不太了解情况。好吧,我几乎为你准备了一个演示:)当我昨天做的时候,它在视频中播放。我可以在另一个地方再试一次,看看是否有帮助,但我会先发布演示好的,迈克。当给出演示时,人们更容易进行测试和实验。这使得调试过程和响应速度大大加快。