我正在制作三星智能电视应用程序。我需要播放 youtube 视频。有谁知道如何做到这一点?我尝试了youtube js api,但是当函数playVideo()
正在执行时,视频才开始加载但没有播放。我有三星智能电视 2012 所以 SDK 是 3.5
2 回答
首先检查您的 youtube 视频是否已授予移动设备访问权限。
其次,您必须禁用该视频上的广告 - 因为带有广告的视频尚无法在电视设备上播放。
有时 playVideo() 后需要一段时间才能开始播放视频,尤其是当您绑定到某些播放器事件时,因此请尝试等待半分钟或一分钟。
如果这没有帮助,请在此处粘贴您的代码 - youtube 嵌入和您的 JS 调用,我会尽力提供帮助。
编辑
尝试像在三星文档中那样使用 Flash 嵌入。
作为电影参数将 src 传递给YouTube API 播放器:
<object type="application/x-shockwave-flash" id="playerObject">
<param name="movie" value="http://www.youtube.com/apiplayer?&enablejsapi=1"></param>
<param name="allowScriptAccess" value="always"></param>
<param name="allowFullScreen" value="true"></param>
<param name="wmode" value="transparent"></param>
</object>
并使用以下方法:
var ytPlayer = null;
function onYouTubePlayerReady() {
ytPlayer = document.getElementById('playerObject');
if (ytPlayer) {
ytPlayer.addEventListener('onStateChange','onChange');
ytPlayer.addEventListener('onError', 'onError');
ytPlayer.cueVideoById('i4iDWXstrWY'); //load video for play http://www.youtube.com/watch?v=i4iDWXstrWY
} else {
alert("error");
}
}
function onChange(newState) {
//Possible values are unstarted (-1), ended (0), playing (1), paused (2), buffering (3), video cued (5)
switch (newState) {
case 5:
ytPlayer.playVideo();
break;
}
function onError(errorCode) {
alert(errorCode);
}
当播放器准备好时,API 会调用onYouTubePlayerReady
回调函数。我认为在您的解决方案中您缺少该cueVideoById
方法。正如YT API 文档中所说
播放当前提示/加载的视频。
我真的不应该告诉你们这些,因为你们将能够制作与我竞争的应用程序......但出于对三星的挫败感,我会告诉你:只需将该死的东西作为网页托管在网络服务器上(使用您喜欢的任何 YouTube API,或者不使用 API,只在页面加载时更改嵌入代码),使用查询字符串参数控制它播放的视频,然后将其 iFrame 到您的三星智能电视应用程序中。如果您尝试嵌入不是网页的应用程序,YouTube 会有严格的嵌入限制......所以坚持网页,然后将网页粘贴到应用程序中。
这是您用于需要在网络浏览器中运行的三星智能电视上的任何应用内内容的通用架构。三星浏览器有幸成为支持 Flash 的 HTML5 浏览器。三星智能电视应用程序允许对 Web 内容进行 IFrame,完全没有安全限制。将 2 和 2 放在一起,您几乎可以在这些华丽的烤面包机上做任何您想做的事情......请记住,您想要卸载这些 IFrame(使用 JQuery 将它们的 SRC 属性设置为“”是一种适当的方法)当您会更改场景,因为它们不会自行卸载,而且这些电视的 RAM 很少。
玩得开心的家伙:)