2015-06-30 4 views
0

Я играл с API-интерфейсом YouTube iframe и создал базовый набор элементов управления проигрывателя для проигрывателя YouTube с использованием Flash CC HTML5 canvas. Элементы управления состоят из кнопки воспроизведения/паузы, видео-панели с перетаскиваемой головкой воспроизведения и визуальной индикацией буферизации и регулятора громкости. Все работает хорошо в Chrome на моем рабочем столе.YouTube iframe Embed не может управлять аудио на iPad

Однако, когда я тестирую плеер на 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; 
}); 

ответ

1

Согласно Safari Docs, свойству тома только для чтения и не может быть установлено.

На устройствах iOS уровень звука всегда находится под управлением пользователя . Свойство volume не настраивается в JavaScript. Чтение свойство объема всегда возвращается 1.

Вы не можете программно установить громкость видео.

+0

Спасибо за понимание. Знаете ли вы, что я могу надежно определить, находится ли пользователь в среде iOS, без использования внешних библиотек? – Malco

+1

Вы можете проверить значения 'navigator.userAgent' или' navigator.vendor': http://stackoverflow.com/questions/9038625/detect-if-device-is-ios – JAL

Смежные вопросы