Audio 用Java实现音频流

Audio 用Java实现音频流,audio,jakarta-ee,stream,file-transfer,Audio,Jakarta Ee,Stream,File Transfer,我正在构建一个应用程序,通过麦克风将语音收集为wav文件。这些录音需要流到服务器并保存(作为wav文件,我知道它们很大,但必须是wav)。我还需要将音频(可以是mp3)从服务器流到web应用程序,以便为用户播放。我不知道如何实现这一点,但我想使用JavaEE应用程序,因为我熟悉Java,而且它比Flex更易于维护(我们在使用旧的Flex代码时遇到了问题)。我关注的是: 如何缓冲传输,以便用户能够听到整个文件而不中断?传输整个文件,然后播放也可以,但是知道如何做会很好 如何验证到服务器的传输?我可

我正在构建一个应用程序,通过麦克风将语音收集为wav文件。这些录音需要流到服务器并保存(作为wav文件,我知道它们很大,但必须是wav)。我还需要将音频(可以是mp3)从服务器流到web应用程序,以便为用户播放。我不知道如何实现这一点,但我想使用JavaEE应用程序,因为我熟悉Java,而且它比Flex更易于维护(我们在使用旧的Flex代码时遇到了问题)。我关注的是:

  • 如何缓冲传输,以便用户能够听到整个文件而不中断?传输整个文件,然后播放也可以,但是知道如何做会很好
  • 如何验证到服务器的传输?我可以发送数据包并验证/重新发送每个数据包吗
  • 有没有现成的API(请!)

  • 正如我对您的问题所作的评论,不清楚您是否已经决定拓扑中存在哪些组件。特别是,不清楚您是否已经有一个服务器进程负责存储这些音频文件。因此,我必须在回答时作出一些假设。请随意评论,我会尽力调整

  • 确保音频文件(由最终用户)在没有网络引起中断的情况下播放的唯一方法是让最终用户(或在最终用户端运行的应用程序,如一些JavaScript代码)在完整下载音频流后播放音频流。除非你这样做,否则你只能减少休息的风险;你不能消除它。即使是最复杂的缓冲算法也无法应对99.99%的网络中断,无法对整个流进行缓冲。由于我不确定您是否有客户端应用程序参与其中,我无法建议如何强制客户端下载整个文件,而不是“按原样”播放;在最简单的情况下,使用
    Content-Disposition
    标题就足够了:

  • 这个问题的答案同样取决于您如何构建解决方案。不过,一般来说,只要您使用标准的流API(如JavaIO),我就不会太担心验证内容是否有错误。网络堆栈(例如,您的操作系统的网络驱动程序)的下部已经提供了错误更正

  • Apache Commons的文件上载可能很有用-同样,这取决于您的体系结构:


  • 从您的问题来看,不清楚您的整个应用程序中涉及多少组件。您写道“我还需要将音频从服务器传输到web应用程序,以便为用户播放”。这意味着有一个web应用程序和一个服务器,两者是完全不同的。如果这是正确的,那么如果您提供有关当前存在的内容的信息将非常有用。