YouTube iframe Embed 无法控制 iPad 上的音频

YouTube iframe Embed can't control audio on iPad

我一直在玩弄 YouTube iframe API 并使用 Flash CC HTML5 canvas 为 YouTube 播放器创建了一组基本的播放器控件。控件包括一个 play/pause 按钮、一个带有可拖动播放头和视觉缓冲指示的视频栏,以及一个音量控制器。在我的桌面上 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;
});

根据 Safari Docs,卷 属性 是只读的,无法设置。

On iOS devices, the audio level is always under the user’s physical control. The volume property is not settable in JavaScript. Reading the volume property always returns 1.

您不能以编程方式设置视频的音量。