在我的网络应用程序中,我在数据库中存储了 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/