java - 播放音频文件数据-Spring MVC

标签 java spring spring-mvc html5-audio

在我的网络应用程序中,我在数据库中存储了 BLOB 列中的用户上传的各种音频剪辑。音频文件是低比特率 WAV 文件。剪辑是 protected ,人们只能看到他上传的那些剪辑。我需要将其在网页本身中在线播放,而不是用户下载剪辑并在播放器中播放。在jsp中我使用<audio>带有源映射到 Controller 映射 url 的标记。

<td> <audio controls><source src="recfile/${au.id}" type="audio/mpeg" /></audio> </td>

哪里,recfile是请求映射,au.id是音频 ID。在 Controller 中,我处理如下请求

@RequestMapping(value = "/recfile/{id}", method = RequestMethod.GET,
        produces = { MediaType.APPLICATION_OCTET_STREAM_VALUE })
public HttpEntity<byte[]> downloadRecipientFile(@PathVariable("id") int id,
        ModelMap model, HttpServletResponse response) throws IOException,
        ServletException {
    LOGGER.debug("[GroupListController downloadRecipientFile]");
    VoiceAudioLibrary dGroup = audioClipService.findAudioClip(id);
    if (dGroup == null || dGroup.getAudioData() == null
            || dGroup.getAudioData().length <= 0) {
        throw new ServletException("No clip found/clip has not data, id="
                + id);
    }
    HttpHeaders header = new HttpHeaders();
    I tried this too
    //header.setContentType(new MediaType("audio", "mp3"));
    header.setContentType(new MediaType("audio", "vnd.wave");
    header.setContentLength(dGroup.getAudioData().length);
    return new HttpEntity<byte[]>(dGroup.getAudioData(), header);
}

当jsp加载时, Controller 收到请求,它返回从数据库获取的音频数据,jsp也显示带有控件的播放器。但当我玩的时候什么也没有发生。为什么?我在配置中遗漏了什么吗?我这样做对吗?

最佳答案

音频类型属性错误,应该是wav而不是mpeg

<audio controls><source src="recfile/${au.id}" type="audio/wav" />

关于java - 播放音频文件数据-Spring MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25444478/

相关文章:

java - 在二叉树中查找节点的父节点

java - 如何根据组合框的更改事件更改另一个文本框的值

java - 在一个实例 bean 上同时使用注解和 XML 配置

java - 更改项目结构后,RequestMapping 和 Hibernate 无法按预期工作

java - 从 Spring 3 到 Spring 2 要记住什么?

java - 从 playstore 下载时签名的 apk 崩溃

java - Spring Web Security 中的自定义方法

java - 使用 Java 访问 HTML5 Localstorage

java - 在自定义 Servlet 中不支持 POST 作为 Spring Boot 中的@Bean

java - 从 `@WebFluxTest` 迁移到 `@SpringBootTest` 后,集成测试中连接被拒绝