2

我正在构建一个应用程序,它允许经过身份验证的用户使用 Web 浏览器将 MP3 音频文件(语音)上传到服务器,以便在网络上分发音频。音频文件需要使用特定的比特率(32kbps 或更低)以确保有效使用带宽,并使用经批准的采样率(22.050 或 44.100)以最大限度地提高兼容性。我希望在上传之前使用 HTML5 FileReader 来确定这些信息,而不是使用服务器端脚本在上传后验证这些要求。如果浏览器检测到无效的比特率和/或采样率,则可以告知用户这一点,并且可以阻止上传尝试,直到对音频文件进行必要的修改。

这可能使用 HTML5 吗?请注意,问题是关于 HTML5,而不是关于我的应用程序的方法。HTML5 可以检测 MP3 音频文件的采样率和/或比特率吗?

仅供参考:我正在使用 FTP Java 小程序来执行上传。小程序设置为在成功上传后自动将用户转发到我选择的 URL。这将繁重的工作交给了客户端,而不是服务器。这也是必要的,因为每个上传文件的最终目的地是不同的;它们可以在不同的服务器和不同的域上,可能在服务器上支持不同的脚本语言。否则,任何一台服务器都会很快超出其存储空间,或者如果服务器端脚本进行了 FTP 传输,服务器的性能将作为单点故障迅速下降。因此,对于我的应用程序,它将上传的音频文件存储在多个服务器和多个域上,比特率和采样率的验证必须在客户端进行。

4

2 回答 2

1

您可以使用 FileReader API 和 Javascript 构建的音频编解码器从音频文件中提取此信息。

一个为纯 JS 编解码器提供基本代码的库是 Aurora.js - 然后实际的编解码器代码建立在它之上

https://github.com/audiocogs/aurora.js/wiki/Known-Uses

自然浏览器必须支持 FileReader API。

从您的用例中,我不明白为什么需要 Java 小程序或 FTP。如果使用异步 badckend(如 Node.js、Python Twisted)和可扩展存储(Amazon S3)正确完成 HTTP 上传,则可以很好地处理多个大文件。类似的用例是调整传入图像的大小,这比从文件中提取音频元数据要求更高。客户端的唯一好处是减少了技术不熟练的用户不必要的上传次数。

于 2012-10-03T06:34:29.587 回答
0

鉴于任何用户都可以更改您的脚本/标记以绕过它甚至重新利用它,我什至不会考虑它。

如果有人可以通过一些 HTML/Javascript 知识更改您的验证脚本,请不要使用 HTML/Javascript。通过在服务器上验证它更容易确保它被验证并正确验证。

于 2012-10-03T01:24:37.493 回答