java - SimpleCaptcha 和 wav 播放

标签 java flash captcha html5-audio jplayer

我们的客户正在使用 SimpleCaptcha .我的理解是 SimpleCaptcha 能够生成 WAVE 格式 (.wav) 的音频验证码。稍后这些 CAPTCHA-s 使用 HTML5 音频标签播放,如下所示:

<audio controls="controls" autoplay>
    <source src="captcha.wav" />
</audio>

当然这不是跨浏览器兼容的,原因之一是 WAVE 格式。这link建议 IE9 仅支持 MP3,而大多数其他浏览器都可以支持 OGG 和 WAVE。进一步的 MP3 是 Fraunhofer 的专利吗?

注意:我们的后端是基于 Java 的。

我的问题是,我们可以为根本不支持 WAVE 格式(例如 IE9)或 HTML5 音频标签的客户提供的最佳后备方案是什么?由于专利问题,我猜想在服务器端动态转换为 mp3 不是一个选项。此外,我不知道任何可以执行此操作的 Java 库......我已经看到像 jPlayer 这样的不错的解决方案。但他们说“为了支持跨浏览器,必须提供一种在 HTML5 和 Flash 中都适用的格式。”,即 mp3、mp4。我也没有找到任何可靠的基于 Flash 的 WAVE 播放器。

最佳答案

在社区其他人的帮助下,我创建了一个 Flash 按钮,它可以将 WAV 文件从服务器流式传输到客户端。它与 Securimage PHP Captcha 一起分发,用于将音频 CAPTCHA 流式传输到客户端。

您可以简单地点击这个 Flash 按钮,或者下载并修改 Flash source code基于相同的代码创建您自己的自定义代码。

当 HTML5 音频不可用时,您可以将其用作备用。

示例用法为:

<object type="application/x-shockwave-flash"
        data="securimage_play.swf?audio_file=/PATH/TO/AUDIO.wav"
        width="32" height="32">
    <param name="movie" value="securimage_play.swf?audio_file=/PATH/TO/AUDIO.wav" />
</object>

您可以将这些附加选项传递给 securimage_play.swf :

  • bgcol : Flash 按钮的背景颜色
  • icon_file : 在 Flash 按钮上显示为图标的 png 图像的 URL

附带说明一下,我确实发现微软在 <audio> 中决定不支持 WAV 音频标签很奇怪,特别是因为他们与 IBM 一起开创了 WAV 格式。是的,WAV 文件比它们支持的其他压缩音频格式更大,但带宽也在增加到无关紧要的程度。

希望对您有所帮助。如果您尝试实现它并有任何问题,请告诉我。您可以看到音频流的演示 here .

关于java - SimpleCaptcha 和 wav 播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11758462/

相关文章:

java - ANSI 到 UTF-8 通过 Java : some lines are lost

切换场景的 JavaFX 问题

javascript - 如何从 javascript 启动 flash 视频?

php - 验证码 session 有时不更新

java - SQuirreL配置: could not initial class org. apache.phoenix.jdbc.PhoenixDriver

内存泄漏

flash - 将对象置于前面,在 Flash AS3 中

flash - swc 和外部 swf 中的字体之间的冲突

PHP GD 图像未在 Chrome 中显示

jsf-2 - 如何使用 PrimeFaces 验证码?