【问题标题】:Samsung Smart TV Play Youtube Video三星智能电视播放 Youtube 视频
【发布时间】:2012-07-24 15:34:06
【问题描述】:

我正在制作三星智能电视应用程序。我需要播放 youtube 视频。 有谁知道如何做到这一点?我尝试了youtube js api,但是当函数playVideo() 正在执行时,视频才开始加载但不播放。 我有三星智能电视 2012 所以 SDK 是 3.5

【问题讨论】:

    标签: youtube youtube-api samsung-smart-tv


    【解决方案1】:

    首先检查您的 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中所说的

    播放当前提示/加载视频。

    【讨论】:

    • 所以它没有用。如果我稍等片刻,视频就会结束而没有播放。就像您观看视频但停留在第一帧一样。我使用谷歌提供的sfobject。然后我有一个 div
      我在handleShow() 上执行的代码是var params = { allowScriptAccess: "always" }; var atts = { id: "myytplayer" }; swfobject.embedSWF("http://www.youtube.com/v/&lt;someytlink&gt;?enablejsapi=1&amp;playerapiid=ytplayer&amp;version=3", "ytapiplayer", "425", "356", "8", null, null, params, atts);。开始视频我使用ytplayer.playVideo();
    • 非常感谢,但有些东西不起作用,我想不通。我在代码中实现了一些警报以查看发生了什么。所以当状态为 5 时,视频就不会开始。我尝试了不同的视频,其中一些返回了错误 150。在论坛上,我发现当视频不适合嵌入时会发生此错误。但我使用的视频是新的,不会产生任何错误。它似乎 playVideo() 不起作用。状态也在这个或 5、3、1 中发生变化。然后当状态为 1 时我调用 playVidee() 并且再次没有.. 有什么想法吗?
    • 您应该只触发一次playVideo() - 在第 5 个状态。你说你得到了 3(缓冲)和 1(播放),所以从 YT API 端一切正常。您是否在 PC 浏览器上检查过 - 是否正常工作?....哦 - 还有一件事 - 您是否在配置文件中设置了参数 &lt;flashplayer&gt;y&lt;/flashplayer&gt;
    • 在我的电脑中,由于闪存限制,它无法正常工作,我直接在电视上查看任何内容。而且我没有包括 flashplayer...
    • 当我包含 标签时,所有视频都开始播放并且声音正常,但没有显示 youtube 播放器清洗,所以我添加了 style="width:800; height: 480 ;"。现在播放器可见,但并非所有视频都开始播放...我需要进行更多测试
    【解决方案2】:

    我真的不应该告诉你们这些,因为你们将能够制作与我竞争的应用程序......但出于对三星的挫败感,我会告诉你们:只需将该死的东西作为网页托管在Web 服务器(使用您喜欢的任何 YouTube API,或者不使用 API,只在页面加载时更改嵌入代码),使用查询字符串参数控制它播放的视频,然后将其 iFrame 到您的三星智能电视应用程序中。如果您尝试嵌入不是网页的应用程序,YouTube 会受到严格的嵌入限制......所以坚持网页,然后将网页粘贴到应用程序中。

    这是您用于三星智能电视上任何需要在网络浏览器中运行的应用内内容的通用架构。三星浏览器有幸成为支持 Flash 的 HTML5 浏览器。三星智能电视应用程序允许对 Web 内容进行 IFrame,完全没有安全限制。将 2 和 2 放在一起,您几乎可以在这些华丽的烤面包机上做任何您想做的事情......请记住,您想要卸载这些 IFrame(使用 JQuery 将它们的 SRC 属性设置为“”是一种适当的方法)当您会更改场景,因为它们不会自行卸载,而且这些电视的 RAM 非常少。

    祝大家玩得开心:)

    【讨论】:

    • 仅供参考。这适用于带有广告的视频。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多