在氮气中使用音频和视频标签

时间:2013-01-07 09:07:51

标签: html5 erlang html5-audio nitrogen

仍然在我的个人网络服务器上工作,我试图在氮气中使用html5音频和视频标签。

由于没有#audio和#video记录,我决定直接在氮气生成的页面中插入html文本,结果如​​下:

<audio controls preload="metadata"><source src="../../My Music/subdir/song.ogg" type="audio/ogg"  /source>audio tags not supported</audio>

根据我的理解,这应该有效,因为音频标签应该由客户端浏览器直接解释,并且代码中没有任何氮气ID或事件观察者。

但是当我从Firefox浏览这段代码时,我会简单地看到控件的开放,然后音频元素就会消失。

如果我复制粘贴由氮气生成的整个代码(显示html源页面,复制并粘贴在位于氮项目原点的文件中)并用浏览器打开它,它可以正常工作。相对路径是正确的,假设氮气项目中的搜索统计数据。我也尝试过绝对路径,但没有成功。

我不知道

  • 如果它构建“._.._ My music_subdir_song.ogg”形式的文件名,就像氮气用于网址分析一样,
  • 或者如果它使用另一个目录来启动路径,
  • 或者它根本不像我想的那样工作。
  • ...

编辑:一些补充信息:

我做了以下更改:

创建一个目录,包括站点/静态目录中的一些ogg文件+在站点/静态中移动静态test.html文件。如果我直接打开test.html - &gt;好。如果我从我的网站重定向 - &gt;不行。

使用Nitrogen应用程序根目录的副本进行相同的测试,并从我的网站访问 - &gt;不行

由于网页上的信息不明确,我修改了test.html以访问我的电脑上不存在的文件 - &gt;同样的行为。

我想我会使用调试器来了解请求的管理方式,以便继续......

编辑2:

使用调试器我可以验证多次调用wf_core:run_catched()。第一个调用是在我的页面中处理重定向到静态文件的事件时。

第二次处理静态html文件本身。

第三次使用Path等于my_music / song.ogg处理finish_static_request(),然后我在处理答案时迷路了。另一个wf_core:run_catched()被并行调用,但我没有遵循它......

我已经能够验证该文件是否可以被访问:我在html文件中添加了几个音频标签,并且我能够使用DownloadHelper Firefox插件“下载”现有文件。

我现在的理解是路径是正确的(至少当我将文件放在site / static的子目录中时),服务器能够检索文件并发送它们,浏览器识别音频和视频标签,但是嵌入式音频/视频阅读器和文件之间的链接丢失了,尽管我在音频标签内添加了一个类型定义。

还有什么想法继续吗?

编辑3:

最后我明白了。正如Chops建议我必须进入inets服务器配置,不是定义路径,而是定义类型关联。我在etc / inets_httpd.erlenv中添加了以下定义,它可以工作。

{mime_types, [
    {"css", "text/css"}, 
    ...
    {"ogg","audio/ogg"},
    {"webm","video/webm"}
]}

:○)

1 个答案:

答案 0 :(得分:2)

基于url属性(“../../ My Music / subdir / song.ogg”)的内容,问题是,当它从氮气服务时是请求(假设你'重新使用默认的127.0.0.1:8000)音频将是网址“http://127.0.0.1:8000/My Music / subdir / song.ogg”

如果您使用标准的氮气安装,您想要做的是将您想要的歌曲文件放入site/static目录,也许放在“songs”子目录中。

然后将url属性更改为“/songs/mysong.ogg”(或您使用的site/static内的任何路径)。

注意:取决于您的服务器选择(例如Webmachine),您可能需要修改服务器的特定配置文件,告诉它处理静态路径的新目录,以获取帮助,检查氮气站点上的configuration docs

除此之外,在氮气中输出原始HTML并没有什么特别之处。我的理解是,这里的问题实际上只与发送到服务器的请求的路径有关。