gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:07:48 26 4
gpt4 key购买 nike

我正在尝试在 android WebView 中使用 youtube iframe 播放器,但它在 android 4.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);

此外,我在 list 中启用了硬件加速:

<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 及更高版本中一切正常。

祝你好运,我还要投票给这个问题,以了解是否有人可以阐明这个问题:)

关于android - Youtube iframe 播放器不会在 android 4.x WebView 中显示视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31591010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com