我一直在使用YouTube iframe API,并使用Flash CC HTML5画布为YouTube播放器创建了一套基本的播放器控件。控件包括一个播放/暂停按钮,一个带有可拖动播放头的视频栏和一个缓冲的可视指示,以及一个音量控制器。在桌面上的Chrome中,一切都运行良好。
然而,当我在iPad上测试播放器时,除音量控制器外,一切正常。滑块移动完全正常,但音量没有变化。
我在网上看了一下,并且无法找到任何特定于iPad无法控制的音量问题,因为iPad上没有开发控制台我无法真正在里面找出来弄清楚发生了什么
如果任何人对此问题有任何经验或对可能发生的事情有任何一般性的见解,那将非常感激。
这是一个包含项目的JSFiddle https://jsfiddle.net/y3dL9jsw/1/。
以下是与音量控制相关的代码:
//Volume Control
mainStage.mcplayer.mcvolumecontrol.volIcon.on("mousedown", function(evt){
if(mainStage.mcplayer.mcvolumecontrol.currentFrame == 0){
mainStage.mcplayer.mcvolumecontrol.gotoAndStop(1);
}else{
mainStage.mcplayer.mcvolumecontrol.gotoAndStop(0);
}
});
//Mouse Down Pick-up Video Playhead, Change Cursor to pointy finger
mainStage.mcplayer.mcvolumecontrol.mcvolhead.on("mousedown", function(evt){
isVolGrabbed = true;
document.body.style.cursor='pointer';
});
//Mousemove Move Voulme Playhead
mainStage.mcplayer.mcvolumecontrol.mcvolhead.on("pressmove", function(evt){
if(isVolGrabbed == true){
evt.nativeEvent.preventDefault();//stop browser default actions from happening (Selecting text, etc)
this.x = evt.stageX - mainStage.mcplayer.x - mainStage.mcplayer.mcvolumecontrol.x;//make playhead follow mouse
//constrain playhead x coords to the videobar
if(this.x < 0 + mainStage.mcplayer.mcvolumecontrol.mcvolslider.x){this.x = mainStage.mcplayer.mcvolumecontrol.mcvolslider.x;}
if(this.x > volbarLength + mainStage.mcplayer.mcvolumecontrol.mcvolslider.x){this.x = volbarLength + mainStage.mcplayer.mcvolumecontrol.mcvolslider.x;}
//if the mouse gets too far from the bar along the y axis, drop the head change back the cursor
//this is important because the Youtube player breaks the mouse events if you mouse over it
if((evt.stageY - mainStage.mcplayer.y) < (-1 * playheadConstrain) || (evt.stageY - mainStage.mcplayer.y) > playheadConstrain){
document.body.style.cursor='auto';
isVolGrabbed = false;
}
}
});
mainStage.mcplayer.mcvolumecontrol.mcvolhead.on("pressup", function(evt){
document.body.style.cursor='auto';
volFraction = (mainStage.mcplayer.mcvolumecontrol.mcvolhead.x - mainStage.mcplayer.mcvolumecontrol.mcvolslider.x) / (volbarLength);
playeryt.setVolume(volFraction * 100);
console.log("vol Drop" + volFraction);
isVolGrabbed = false;
});
答案 0 :(得分:1)
根据Safari Docs,volume属性是只读的,无法设置。
在iOS设备上,音频级别始终位于用户的物理层之下 控制。在JavaScript中无法设置volume属性。读 volume属性始终返回1.
您无法以编程方式设置视频的音量。