微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Youtube iframe播放器不会在android 4.x WebView中显示视频

我正在尝试在Android WebView中使用youtube iframe播放器,但在5.x上它在5.x上失败,一切都很好.
当我在4.x中尝试时,播放器加载视频,当我开始播放时,我只看到视频声音.
logcat反复填充chrome错误消息:
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开始,一切正常.

祝你好运,我加上投票这个问题,知道是否有人可以说明这个问题:)

原文地址:https://www.jb51.cc/html/231584.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐