如何制作可嵌入音频文件和Flash播放器?

时间:2012-02-20 20:02:02

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

我有一个播放音频文件的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>

拥有<object><iframe>有什么好处?

最后,在主站点上。任何时候最终用户访问音频页面。网络应用会增加views_count。如果我使用<object><iframe>。我还能以某种方式跟踪观看次数吗?

1 个答案:

答案 0 :(得分:1)

iframe vs object

YouTube使用<iframe>(即“好处”)的主要原因是它允许他们更改视频的实际显示方式 - 没有嵌入视频的网站必须更改其{{1元素。即:

  • YouTube可以根据浏览器提供不同的内容 - 例如,如果浏览器未安装FlashPlayer,则可以在<object>中输出HTML 5 <video>元素。将来,您可能希望执行相同的操作(使用<iframe>元素),因此<audio>可能是长期灵活性的不错选择。

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

代码

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

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

<强>跟踪

你可以追踪。对音频的请求将始终发送到您的服务器,因此在任何一种情况下都可以使用跟踪。 <pre>的情况更容易以您已经执行过的方式进行跟踪 - 因为该iframe的<pre><code>...</code></pre>只是指向更简单版本音频页面的链接(仅限显示实际播放器),您可以用与音频页面完全相同的方式增加<iframe>

关于src优势

为什么SoundCloud只使用views_count?只是猜测......

要么他们还没有完成它,要么他们已经决定(在某些方面非常正确)一个完全可预测的,有效的<object>元素有点未来,并不值得它爱好。

或者他们对某些开发人员所拥有的<object>元素有哲学上的厌恶(我在某些方面包括了 - 如果绝对没有其他选择有意义的话我只使用它。)

用户(即嵌入声音的用户)也可能打算在<audio>会导致麻烦的地方使用它,不直接支持(例如某些CMS的)等等。

此外,虽然我怀疑这是他们的原因,但这意味着他们的服务器还会受到更多打击 - 让用户嵌入<iframe>将直接检索Flash内容。如果他们使用<iframe>,SoundCloud将受到每次嵌入的额外请求 - 一个用于HTML,一个用于音频文件(对于FlashPlayer,一个用于swf文件)。