仍在我的个人网络服务器上工作,我试图在 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”的文件名,就像氮为 url 分析所做的那样,
- 或者如果它使用另一个目录来启动路径,
- 或者如果它根本不像我想的那样工作。
- ...
编辑:一些补充信息:
我做了以下更改:
在 site/static 目录中创建一个包含一些 ogg 文件的目录 + 在 site/static 中移动一个静态 test.html 文件。如果我直接打开 test.html -> ok。如果我从我的网站重定向-> 不行。
使用 Nitrogen 应用程序根目录的副本进行相同的测试,并从我的网站访问 -> 不行
由于网页上的信息不明确,我修改了 test.html 以访问我的 PC 上不存在的文件 -> 相同的行为。
我想我将使用调试器来了解如何管理请求,待续......
编辑2:
使用调试器,我可以验证 wf_core:run_catched() 是否被多次调用。第一次调用是在它处理我的页面中重定向到静态文件的事件时。
第二次处理静态html文件本身。
第三次处理路径等于 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"}
]}
:o)