Nat*_*enn 5 audio stream file-transfer java-ee
我正在构建一个应用程序,它通过麦克风收集语音作为wav文件.这些录音需要流式传输到服务器并保存(作为wav文件,我知道它们很大,但它们必须是wav).我还需要将音频(这些可以是mp3)从服务器流式传输到Web应用程序以便为用户播放.我不知道如何实现它,但我想使用Java EE应用程序,因为我熟悉Java并且它比Flex更容易维护(我们在工作时遇到旧的Flex代码问题).我担心的是:
正如我对您的问题进行评论时,尚不清楚您是否已经决定拓扑中存在哪些组件。特别是,尚不清楚您是否已经有一个服务器进程负责存储这些音频文件。因此,我必须在回答中做出一些假设。欢迎大家留言评论,我会尽力调整。
确保(由最终用户)播放音频文件而不会出现网络中断的唯一方法是让最终用户(或在最终用户端运行的应用程序,例如某些 JavaScript 代码)播放音频完整下载后进行流式传输。除非你这样做,否则只能降低断裂的风险;你无法消除它。即使是最复杂的缓冲算法也无法应对 99.99% 的网络中断来缓冲整个流。由于我不确定您是否有涉及此的客户端应用程序,因此我无法建议如何强制客户端下载整个文件而不是“按原样”播放它;在最简单的情况下,您可能足以使用Content-Disposition标头: http: //en.wikipedia.org/wiki/MIME#Content-Disposition
同样,这个问题的答案取决于您如何构建解决方案。不过,一般来说,只要您使用标准流 API(例如 Java IO),我就不会太担心验证内容是否有错误。网络堆栈的较低层已经提供了纠错功能(例如,操作系统的网络驱动程序)。
Apache Commons 的文件上传可能很有用 - 同样,这取决于您的架构: http: //commons.apache.org/fileupload/