仍然在我的个人网络服务器上工作,我试图在氮气中使用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源页面,复制并粘贴在位于氮项目原点的文件中)并用浏览器打开它,它可以正常工作。相对路径是正确的,假设氮气项目中的搜索统计数据。我也尝试过绝对路径,但没有成功。
我不知道
编辑:一些补充信息:
我做了以下更改:
创建一个目录,包括站点/静态目录中的一些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"}
]}
:○)
答案 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并没有什么特别之处。我的理解是,这里的问题实际上只与发送到服务器的请求的路径有关。