html5 音频标签是不是非正式地包含 .mid (MIDI)?

Posted

技术标签:

【中文标题】html5 音频标签是不是非正式地包含 .mid (MIDI)?【英文标题】:Does the html5 audio tag encompass .mid (MIDI) unofficially?html5 音频标签是否非正式地包含 .mid (MIDI)? 【发布时间】:2011-04-26 11:38:24 【问题描述】:

似乎很清楚,正式的 html5 音频标签旨在与 ogg 格式一起使用。

html5 音频标签是否非正式地包含 .mid (MIDI)?

【问题讨论】:

【参考方案1】:

更新:

这是一个有点老的问题,但它在 Google 上的排名仍然很高,因此这里是对上述答案的一些更新 - 提出问题时可能不可用的标准和工具,但可能对发现此问题的人有用今天的问题:

Web MIDI API(目前是 2012 年 12 月 26 日的 W3C 编辑草稿 - 即今天 - 所以它可能会改变) MIDI.js - 使用 javascript 播放 MIDI jasmid - 使用 JavaScript 进行 MIDI 合成

另请参阅这些问题:

Generate live MIDI from Javascript generating MIDI in javascript

【讨论】:

Web MIDI API 草案现已托管here on GitHub。【参考方案2】:

尽管 MIME 类型为“audio/midi”,但 MIDI 文件不是音频……它只是一种音乐表演,没有声音。换句话说,一个 MIDI 文件存储了钢琴演奏者敲击的琴键、弹奏的时间以及弹奏的力度,但没有实际的钢琴声音。您必须通过带有钢琴声音的采样器进行音乐表演,就像您必须通过自动钢琴演奏钢琴卷一样。 Apple QuickTime 7 内置了这样的采样器,但我不知道 QuickTime X 是否有。无论如何,您必须使用嵌入标签,它不能通过音频标签工作。

似乎很清楚,正式的 html5 音频标签是有意的 用于 ogg 格式。

没有。 HTML5 是一种标记标准。它根本没有解决音频标准化问题。换句话说,它告诉你如何编码标记,而不是如何编码音频。音频标准化是由 ISO 的运动图像专家组在过去 20 年里完成的。当前的音频标准是MPEG-4 AAC(audio/mp4),之前的标准是MPEG-2 MP3(audio/mp3)。如果您要将标记标准化为 W3C HTML5 规范,那么您应该将您的音频标准化为 ISO MPEG-4 规范。否则,只需忽略所有标准并使用您喜欢的任何标记和音频,并制作只有您可以看到的内容。所有 PC 和手机都支持开箱即用的 HTML5 和 MPEG-4。只有备用浏览器会阻止访问用户的硬件 MPEG-4 播放器,因此您应该通过向这些用户提供 MP4 音频文件作为他们可以单击并在帮助应用程序(如 iTunes)中打开的简单链接来解决这些问题(这在大约 90% 的 PC 上)。或者,您可以在这些备用浏览器中调用 FlashPlayer,并在其中加载相同的标准 MP4。

对于 Ogg,它可以在一些备用浏览器中播放,但不能在用户的 RSS 阅读器、Podcast 阅读器、提供 Web 视图的本机应用程序以及用户可能会看到您的网页的许多其他环境中播放。标准化的音频在所有这些环境中播放。因此,如果您提供 Ogg,则必须将其作为 MP4 之后的第二选择,因为 Ogg 仅在极少数情况下需要。

【讨论】:

“尽管 MIME 类型为“audio/midi”,但 MIDI 文件不是音频……它只是一种音乐表演,没有声音。”无论如何,它仍然是一种音频文件格式。在这种情况下,“音频”绝不意味着可以由 声音 播放器立即播放。它的意思是“与音频相关的文件类型”,仅此而已。例如。 MDN says: "音频或音乐数据。"【参考方案3】:

它doesn't appear to 支持原始 MIDI 文件,至少在 Chrome 10 中。

然而,W3C 表示它支持XMF,可以嵌入 MIDI。不过不确定浏览器是否支持。

【讨论】:

“不安全的 JavaScript 尝试从 URL fiddle.jshell.net/_display 的框架访问 URL jsfiddle.net/alexdickson/GSLLB 的框架。域、协议和端口必须匹配。”所以这不是一个决定性的测试 @Joachim 否,这意味着小提琴运行的iframe 试图访问其父级,但由于相同的来源策略而被阻止。它与audio 元素无关。 @alex:是的,我就是这么解释的,但它并没有告诉我们.mid文件是否已经播放。 @Joachim 好吧,我的回答是 Chrome 10 不会播放 MIDI,但会播放 MP3。我不确定同源警告如何影响它。 @alex: 哦,我没有看到 MP3 的例子(它有效)。所以错误消息似乎是虚假的,因为它不会阻止文件被访问。【参考方案4】:

引用官方 Web MIDI API 页面 (http://www.w3.org/TR/webmidi):

对于一些用户来说,“MIDI”已经成为标准 MIDI 文件和通用 MIDI 的代名词。这不是这个 API 的意图;简单地播放 .SMF 文件的用例不在本规范的范围内(例如,它可以被视为 HTML5 元素支持的不同格式)。

换句话说,W3 Org 表示浏览器对简单 MIDI 文件的支持应该通过 HTML5 标签。遗憾的是,据我所知,目前还没有浏览器通过 tg 支持 MIDI。但我敢打赌,第一个这样做的人将获得很大的市场份额。例如,http://www.hymntime.com/tch 的站点有数千个 MIDI 文件,这些文件仍然必须使用旧的 标签才能播放。即便如此,它仍然需要一个插件。尝试向非技术用户解释什么是“插件”或如何安装!

【讨论】:

【参考方案5】:

浏览器不需要支持 HTML5 规范的任何特定编解码器或编码。有一些关于supporting MIDI-like sound behaviour in the future 的讨论,但不多——去年邮件列表上的these two 帖子没有得到任何直接回复。

我知道 QuickTime 确实(或曾经?)支持 MIDI,并且 Safari 会播放 QuickTime 支持的任何音频,所以它可能已经在 Safari 中工作,但我还没有尝试过。

【讨论】:

以上是关于html5 音频标签是不是非正式地包含 .mid (MIDI)?的主要内容,如果未能解决你的问题,请参考以下文章

检测视频/音频是不是在 html5 视频标签中停止

html 5 音频标签宽度

流式传输 MP3 而不是使用 HTML5 音频标签下载它

HTML 5 音频标签多个文件

暂停视频不会停止 html5 视频标签中的音频

HTML5 检查音频是不是正在播放?