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