这个问题在 stackoverflow 上的其他帖子中描述得不够清楚,并且 id like to start a new thread 专门解决 YouTube iFrame API 在添加到 ios 8.* 上的主屏幕的 Web 应用程序中使用时出现的问题。苹果浏览器。
在我的网络应用程序中,在移动 Safari 网络浏览器中查看时,播放正常在运行 iOS 8.*(任何高于 8 的版本)的 iPhone 上。
我试图解决的具体问题仅发生在将网络应用程序添加到主屏幕并从那里启动后尝试播放嵌入的 YouTube iframe 时。
我将排除发布我的所有代码,例如 html 标记或完整的 JS 集,因为它似乎是多余的;我想直截了当,但如果有人觉得有必要,请回复,我会更新这篇文章。
在页面标题中,我包含必要的元标记,如下所示:
<meta name="apple-mobile-web-app-capable" content="yes"/>
这使得能够从移动 Safari 中“添加到主屏幕”并将 Web 应用程序加载到无 Chrome Web View 中。
我还在页面头中加载了 YouTube API,如下所示:
<script type="text/javascript" src="https://www.youtube.com/iframe_api"></script>
一旦从 Safari 将 Web 应用程序添加到主屏幕,启动它就会按预期将 Web 应用程序加载到无 Chrome Web View 中,并根据我的 JS 在我的代码中进一步通过 YouTube iframe API 嵌入 YouTube 视频,如下所示:
var myPlayer = new YT.Player(MY_DIV_TARGET_ID, {
videoId: MY_YT_VIDEO_ID,
playerVars: {
'autohide': 1,
'autoplay': 0,
'controls': 0,
'ps': 'docs',
'showinfo': 0,
'color': 'white',
'modestbranding': 1,
'iv_load_policy': 3,
'playsinline': 1,
'rel': 0,
'theme': 'dark'
'enablejsapi': 1
},
events: {
'onReady': onYouTubePlayerReady,
}
});
在我的“onYouTubePlayerReady”函数中,我设置所有事件监听器以按照 YouTube 的说明跟踪状态和错误:YouTube iFrame API reference
此时,一旦用户按照 Apple 的要求在嵌入式播放器中物理点击 YouTube 提供的播放按钮,用户必须通过点击/点击播放按钮物理触发播放,视频开始缓冲并且事件监听器“onStateChange”触发结果为 3 和/或 YT.PlayerState.BUFFERING。所有这些都是预期的行为。
UI 也按预期使用微调器更新,但播放器此时挂起,从不播放视频。 没有错误 我可以在 safari 开发者控制台的任何地方看到的火,我可以用它来调试这个问题。我也无法和/或不知道如何跟踪缓冲区的百分比。
我在网上不知疲倦地寻找了几个星期的解决方案,但无济于事。
非常感谢任何帮助。
最佳答案
Vimeo、DailyMotion 和本地提供的 HTML5 视频也会发生这种情况,这些视频已遵循以下准则:
https://developer.apple.com/library/mac/documentation/AppleApplications/Reference/SafariWebContent/CreatingVideoforSafarioniPhone/CreatingVideoforSafarioniPhone.html
此问题已由 iOS8 更新引入,Apple 仍未解决此问题,Apple 现在应该很清楚这个问题(请参阅 SO 上的各种错误报告)。
我正在使用 8.2b5 进行测试,但此问题仍未解决。
我的感觉是,他们有点想强制你进入 Apple 生态系统和原生应用程序来流式传输视频。
PS:audio
也会出现同样的问题
关于ios - YouTube iFrame API 在 iOS 8.* 上缓冲期间挂起,特别是在无 Chrome 主屏幕 Web 应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28328521/