【发布时间】:2012-07-24 15:34:06
【问题描述】:
我正在制作三星智能电视应用程序。我需要播放 youtube 视频。
有谁知道如何做到这一点?我尝试了youtube js api,但是当函数playVideo() 正在执行时,视频才开始加载但不播放。
我有三星智能电视 2012 所以 SDK 是 3.5
【问题讨论】:
标签: youtube youtube-api samsung-smart-tv
我正在制作三星智能电视应用程序。我需要播放 youtube 视频。
有谁知道如何做到这一点?我尝试了youtube js api,但是当函数playVideo() 正在执行时,视频才开始加载但不播放。
我有三星智能电视 2012 所以 SDK 是 3.5
【问题讨论】:
标签: youtube youtube-api samsung-smart-tv
首先检查您的 youtube 视频是否已授予移动设备访问权限。
其次,您必须禁用该视频上的广告 - 因为带有广告的视频尚无法在电视设备上播放。
有时 playVideo() 后需要一段时间才能开始播放视频,尤其是当您绑定到某些播放器事件时,因此请尝试等待半分钟或一分钟。
如果这没有帮助,请在此处粘贴您的代码 - youtube 嵌入和您的 JS 调用,我会尽力提供帮助。
编辑
尝试像 Samsung docs 那样使用 Flash 嵌入。
将src作为电影参数传递给YouTube API player:
<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 doc中所说的
播放当前提示/加载视频。
【讨论】:
handleShow() 上执行的代码是var params = { allowScriptAccess: "always" }; var atts = { id: "myytplayer" }; swfobject.embedSWF("http://www.youtube.com/v/<someytlink>?enablejsapi=1&playerapiid=ytplayer&version=3", "ytapiplayer", "425", "356", "8", null, null, params, atts);。开始视频我使用ytplayer.playVideo();
playVideo() - 在第 5 个状态。你说你得到了 3(缓冲)和 1(播放),所以从 YT API 端一切正常。您是否在 PC 浏览器上检查过 - 是否正常工作?....哦 - 还有一件事 - 您是否在配置文件中设置了参数 <flashplayer>y</flashplayer>?
我真的不应该告诉你们这些,因为你们将能够制作与我竞争的应用程序......但出于对三星的挫败感,我会告诉你们:只需将该死的东西作为网页托管在Web 服务器(使用您喜欢的任何 YouTube API,或者不使用 API,只在页面加载时更改嵌入代码),使用查询字符串参数控制它播放的视频,然后将其 iFrame 到您的三星智能电视应用程序中。如果您尝试嵌入不是网页的应用程序,YouTube 会受到严格的嵌入限制......所以坚持网页,然后将网页粘贴到应用程序中。
这是您用于三星智能电视上任何需要在网络浏览器中运行的应用内内容的通用架构。三星浏览器有幸成为支持 Flash 的 HTML5 浏览器。三星智能电视应用程序允许对 Web 内容进行 IFrame,完全没有安全限制。将 2 和 2 放在一起,您几乎可以在这些华丽的烤面包机上做任何您想做的事情......请记住,您想要卸载这些 IFrame(使用 JQuery 将它们的 SRC 属性设置为“”是一种适当的方法)当您会更改场景,因为它们不会自行卸载,而且这些电视的 RAM 非常少。
祝大家玩得开心:)
【讨论】: