HTML的音频标签中无法加载音频

4

我正在测试音频HTML标签。

在我的测试环境中它能够正常工作,但是在我的生产环境中却无法工作。

我只是简单地使用了:<audio src="/sandbox/test.mp3" controls="controls"></audio>

测试站点运行在Windows上,而生产站点运行在Linux上,但我认为这不应该有任何影响。

我可以下载这个音轨,所以我知道它是放在正确的位置上的。

生产环境的URL是:http://pieterhordijk.com/sandbox

如上所述,完全相同的代码在测试站点上运行正常。

有人知道为什么它不能加载我的音频吗?

PS

我正在使用:

Chrome 11.0.696.68

编辑

现在我使用的是Chrome 13 (Canary Build),MP3文件能够被加载。

但WAV文件只加载了第一秒钟。


1
另外,您应确保您的vorbis音频文件具有.oga扩展名,并将其作为audio/ogg提供。 - Shadow2531
@Shadow:嗯,好的。我不知道那个。我能否只是重命名文件,还是它是完全不同的格式? - PeeHaa
1
你只需要重命名文件。然而,我注意到了你的ogg文件中还存在另外一个问题。它们不包含vorbis音轨,而是包含flac音轨。你的wav文件应该使用http://www.rarewares.org/ogg-oggenc.php进行编码成oga文件。 - Shadow2531
@Shadow。感谢您的帮助,伙计。我已经在 http://www.oggconvert.com/ 上将它转换了。如果您说格式不对,我会自己下载编码器并处理它。 - PeeHaa
2个回答

3

http://pieterhordijk.com/sandbox/test.mp3被作为audio/mpeg提供,这很好。然而,当我使用Opera下载它时,由于某种原因,它会损坏,我无法将其添加到Foobar的播放列表或其他任何地方。但是,使用wget可以正常下载,所以这可能只是Opera的问题或服务器给予Opera的一些奇怪反应。在Opera中使用<audio>加载mp3当然不起作用,因为Opera不支持该格式。

http://pieterhordijk.com/sandbox/test.ogg被作为audio/ogg提供,这很好。并且,现在包含vorbis而不是flac(因为您修复了它)。远程在Opera中无法播放,但是如果我下载文件并在本地的Opera中打开它,则可以正常播放。在Foobar中也可以正常播放。

http://pieterhordijk.com/sandbox/test.oga以错误的mime类型提供。它被作为text/plain提供,但应该被作为audio/ogg提供(您可以在.htaccess中修复此问题)。但是,它确实包含vorbis,并且可以在Foobar中播放。同样,这个在Opera中无法远程播放。但是,如果我下载它并在本地的Opera中打开它,则可以正常播放。

http://pieterhordijk.com/sandbox/test.wav被作为audio/x-wav提供,这很好。但是,wav文件不适合流式传输,因为其大小为30.9MB,除非完全获取,否则播放可能会很糟糕。这个至少可以在Opera中远程播放。

然而,在我的网站上一切都很好。请参见http://shadow2531.com/opera/testcases/plugins/temp/peehaa/test_audio_vorbis.html。您的oga文件可以在Opera中正常播放,对于不支持Vorbis的UA,它应该回退到mp3。

话虽如此,看起来似乎是您的服务器提供文件的方式有问题。我注意到的唯一区别是您的服务器发送了一个Vary: Accept-Encoding头。但是,不确定是否是原因。

现在,正如您从我的测试页面中看到的那样,它正在使用:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <p>
            <audio controls width="300">
                <source src="test.oga" type='audio/ogg; codecs="vorbis"'>
                <source src="test.mp3" type="audio/mpeg">
                <a href="test.oga">test.oga</a>
                <a href="test.mp3">test.mp3</a>
            </audio>
        </p>
    </body>
</html>

这就是您可以回退到其他类型的方式。有关更多信息,请参见http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#the-source-element。如果mp3和vorbis不足够,您可以将aac音频作为另一种备用方案添加到mp4 / m4a容器中。


这是一个MP3文件。我已经在多台机器上下载和测试过(都是Windows系统)。它可以在我的本地开发机器上加载,但是在我的生产环境机器上无法加载。 - PeeHaa
你能否在你的回答中添加关于oggenc和audio/ogg的评论? - PeeHaa
1
@PeeHaa。稍后会在这里完成翻译。 - Shadow2531
1
@PeeHaa。给你了,希望对你有所帮助。 - Shadow2531
哇,感谢您进行了如此广泛的测试!我知道备用方案。我只是将其分开以便于轻松查看实际发生的情况以进行测试。特别感谢您(http://pieterhordijk.com/sandbox/html5-audio-api)! :) - PeeHaa

0

我曾经遇到过类似的问题,因为某种原因它无法加载本地MP3文件,对我来说解决方案是使用OGG文件,这样一切都正常了。我的本地开发系统是Linux/apache2,我测试了Firefox 8和Chrome 15。虽然音频标签可以与远程MP3和OGG文件一起使用,但我不知道为什么它们在本地无法工作,而OGG在本地可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接