【问题标题】:How do I make an audio file and flash player embeddable?如何使音频文件和 Flash 播放器可嵌入?
【发布时间】:2012-02-20 20:02:01
【问题描述】:

我有一个播放音频文件的 Flash 播放器(使用 JWPlayer)。文件播放正常。

我如何提供嵌入代码供最终用户复制,以便他们可以直接在自己的网站上发布播放器和播放音频文件?我应该在某处使用 HTML <pre> 标签吗?还是 JavaScript 来生成嵌入代码/链接?

例如。 SoundCloud 有:

<object height="81" width="100%"> <param name="movie" value="https://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F31988157&amp;show_comments=true&amp;auto_play=false"></param> <param name="allowscriptaccess" value="always"></param> <embed allowscriptaccess="always" height="81" src="https://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F31988157&amp;show_comments=true&amp;auto_play=false" type="application/x-shockwave-flash" width="100%"></embed> </object>   <span><a href="http://soundcloud.com/chris_ilett/the-fray">The Fray</a> by <a href="http://soundcloud.com/chris_ilett">chris_ilett</a></span>

YouTube 有:

<iframe width="420" height="315" src="http://www.youtube.com/embed/FL7yD-0pqZg" frameborder="0" allowfullscreen></iframe>

拥有&lt;object&gt;&lt;iframe&gt; 有什么好处?

最后,在主站点上。任何时候最终用户访问音频页面。 Web 应用程序增加了views_count。如果我使用&lt;object&gt;&lt;iframe&gt;。我还能以某种方式跟踪观看次数吗?

【问题讨论】:

    标签: javascript ruby-on-rails-3 flash


    【解决方案1】:

    iframe 与对象

    YouTube 使用&lt;iframe&gt;(即“好处”)的主要原因是它允许他们更改视频的实际显示方式,而嵌入视频的网站无需更改其&lt;object&gt; 元素。即:

    • YouTube 可以根据浏览器提供不同的内容 - 即,如果浏览器没有安装 FlashPlayer,他们可以在 &lt;iframe&gt; 中输出 HTML 5 &lt;video&gt; 元素。将来,您可能也想做同样的事情(使用 &lt;audio&gt; 元素),因此从长远来看,&lt;iframe&gt; 可能是一个不错的选择。

    • YouTube 更容易在出现错误等情况下更改内容的输出方式。换句话说,如果出于某种原因(例如,为了使 FlashPlayer 12 正常运行),他们需要添加或更改 @987654328 @ 在 HTML 或其他内容中,他们可以做到这一点,而无需每个嵌入视频的人都必须自己更改它。

    代码

    您可能会使用 Ruby 来输出实际代码,尽管您也可以使用 Javascript - 它需要以某种方式生成以反映应该播放的确切音频。至于把它放在&lt;pre&gt; 标签中,这不是技术上的必要——只是为了更好的用户体验——只是因为更容易分辨代码的开始和结束位置。

    究竟使用哪些标签只是一个哲学问题。有人会说“使用&lt;code&gt; 元素(表示它的代码)并将其设置为显示为块元素”;其他人会说“只是我们一个 &lt;pre&gt; 元素,因为它已经是一个块元素”;有些人会说“将两者结合起来:&lt;pre&gt;&lt;code&gt;...&lt;/code&gt;&lt;/pre&gt;”。

    跟踪

    您可以跟踪任何一个。对音频的请求将始终发送到您的服务器,因此在任何一种情况下都可以使用跟踪。 &lt;iframe&gt; 的情况更容易以与您已经在做的方式相同的方式进行跟踪 - 因为该 iframe 的 src 将只是指向您的音频页面的更简单版本的链接(仅显示实际播放器),您可以增加views_count,方法与音频页面完全相同。

    至于&lt;object&gt;的优势

    为什么 SoundCloud 只使用&lt;object&gt;?只是在这里猜测......

    要么他们还没有实现它,要么他们已经决定(在某些方面非常正确)一个完全可预测的、有效的 &lt;audio&gt; 元素有点面向未来,而且还不值得。

    或者他们对某些开发人员拥有的 &lt;iframe&gt; 元素有一种哲学上的厌恶(我在某些方面包括在内 - 我只有在绝对没有其他替代方案有意义的情况下才使用它)。

    用户(即嵌入声音的人)也可能打算在&lt;iframe&gt; 会造成麻烦、不直接支持(例如某些 CMS)等的地方使用它.

    此外,虽然我怀疑这是他们的原因,但这意味着他们的服务器又受到了一次攻击——让用户嵌入 &lt;object&gt; 将直接检索 Flash 内容。如果他们使用&lt;iframe&gt;,SoundCloud 将受到每个嵌入的额外请求 - 一个用于 HTML,一个用于音频文件(对于 FlashPlayer,一个用于 swf 文件)。

    【讨论】:

    • 感谢您的详细解释。在这种情况下,为什么 SoundCloud 仍然使用 &lt;object&gt; 而不是 &lt;iframe&gt; 方法?正如您所描述的,&lt;iframe&gt; 方法更具动态性。
    • 其实这也很好解释了:support.google.com/youtube/bin/…
    • &lt;object&gt;“优势”上添加了一些内容。但是,是的,最有可能的是完全支持(嗯,除了没有 FP 的平台 ;-) ),尽管它没有解释为什么它们不包括这两种可能性。
    猜你喜欢
    • 2011-02-24
    • 1970-01-01
    • 2011-03-25
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多