Youtube iframe player не будет показывать видео в android 4.x WebView

Я пытаюсь использовать проигрыватель iframe youtube внутри Android-браузера, но он не работает на Android 4.x, а на 5.x все отлично работает.
Когда я пробую его в 4.x, плеер загружает видео, когда я его запускаю, я ничего не вижу, кроме как слышу звук видео. Логарифм заполняется сообщениями об ошибках хрома снова и снова:

E/chromium(20362): [ERROR:gles2_cmd_decoder.cc(5942)] [.Compositor-Onscreen-0x5db83bb8]GL ERROR :GL_INVALID_OPERATION : glUseProgram: program not linked E/chromium(20362): [ERROR:gles2_cmd_decoder.cc(5718)] [.Compositor-Onscreen-0x5db83bb8]GL ERROR :GL_INVALID_OPERATION : glUniformMatrix4fv: wrong uniform function for type E/chromium(20362): [ERROR:gles2_cmd_decoder.cc(5718)] [.Compositor-Onscreen-0x5db83bb8]GL ERROR :GL_INVALID_OPERATION : glUniform1iv: wrong uniform function for type 

Вот как я установил WebView:

 this.webview = (WebView) this.findViewById(R.id.webview); WebSettings settings = this.webview.getSettings(); settings.setJavaScriptEnabled(true); settings.setAppCacheEnabled(false); this.webview.setWebChromeClient(new WebChromeClient()); ... this.webview.loadUrl(ADDRESS_OF_PAGE); 

Кроме того, я активирую аппаратное ускорение в манифесте:

 <application ... android:hardwareAccelerated="true"> 

Вот часть js:

 var player; var VIDEO_ID = "EIsauUFIguE"; window.onYouTubeIframeAPIReady = function() { console.log("youtube api ready, loading player"); player = new YT.Player("playerIframe", { width: "100%", height: "100%", videoId: null, events: { onReady: onPlayerReady, onStateChange: onPlayerStateChange, onPlaybackQualityChange: onPlayerPlaybackQualityChange, onError: onPlayerError }, playerVars: { modestbranding: 1, playsinline: 1, fs: 0, showinfo: 0 } }); } function onPlayerReady(event) { console.log("player is ready: ", event); playVideo(); } function onPlayerStateChange(event) { console.log("player state change: ", event); } function onPlayerPlaybackQualityChange(event) { console.log("player playback quality change: ", event); } function onPlayerError(event) { console.log("player error: ", event); } function playVideo() { console.log("playing video: " + VIDEO_ID); player.loadVideoById(VIDEO_ID); player.setPlaybackQuality("medium"); } function loadPlayer() { console.log("loading youtube api"); var tag = document.createElement("script"); tag.src = "https://www.youtube.com/iframe_api"; var firstScriptTag = document.getElementsByTagName("script")[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); } loadPlayer(); 

Любая идея, почему он ведет себя таким образом и только в android 4.x? Благодарю.

    У меня была та же проблема, но после долгого боя я не нашел решения. Я тестировал все конфигурации с помощью webview и делал много разных изменений html для размещения iframe.

    После моих исследований я могу только добавить:

    • В версиях Android 4 невозможно автозапуск. Пользователь должен нажать кнопку воспроизведения в iframe, чтобы начать воспроизведение видео. В частности:

      • В Android 4.1 воспроизводится звук, но не изображение.
      • В Android 4.3 я тестировал устройства, которые могут воспроизводить аудио, но не видео и устройства, которые не могут воспроизвести что-либо.
      • В Android 4.4 ничего не воспроизводить
    • С Android 5 и + все работает отлично.

    Удачи и я, плюс, проголосовать за этот вопрос, чтобы узнать, может ли кто-нибудь поставить свет на этот вопрос 🙂

    Intereting Posts