您可以在此处查看https://hyperaud.io/lab/pbr-test/ 使用除 Safari 之外的任何浏览器,您都可以修改 plabackRate,而不会中断视频播放。
在 Safari 中,似乎每次修改播放速率时视频都会重新缓冲(暂停 0.5 秒)
我会每 50 毫秒更改 video.playbackRate 以显示视频的斜坡慢动作或渐进慢动作。
这段 javascript 代码可以完成这项工作,但不幸的是在 Safari(iOS 或 MacOS)中无法工作
var rint=null;
function iniramp(){
//pt is the central time point where make the ramped slow motion
var sr=pt-1.5,er=pt+1.5;
if(sr<0)sr=0;
//et is end time of video
if(er>et)er=et;
video.currentTime=sr;
video.playbackRate=0.98;
rint=setInterval(function(){doramp(sr,er)},50);
if (video.paused) video.play();
}
function doramp(sr,er){
var p,step=0.02,pbr=video.playbackRate,minrate=0.25,ct=parseFloat(video.currentTime);
if (pbr<0.5)step=0.01;
if (ct<pt){
p=pbr-step;
if(p<minrate)p=minrate;
} else {
p=pbr+step;
if(p>1)p=1;
if (ct>er){endramp();iniramp();return false;}
}
video.playbackRate=p;
}
对 Safari 有什么想法吗?
不幸的是,这在 Safari 中已经是一个已知问题相当长一段时间了。我不知道有什么解决方法。