0

仍在我的个人网络服务器上工作,我试图在 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)

4

1 回答 1

2

根据url属性的内容(“../../My Music/subdir/song.ogg”),当它从 Nitrogen 提供时,问题是请求(假设您使用默认的 127.0.0.1: 8000) 的音频将发送到 URL “http://127.0.0.1:8000/My Music/subdir/song.ogg”

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

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

注意:根据您的服务器选择(例如 Webmachine),您可能需要修改服务器的特定配置文件以告诉它处理静态路径的新目录,如需帮助,请查看Nitrogen 站点上的配置文档。

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

于 2013-01-07T17:23:31.633 回答