使用Google App Engine中的Java Servlet进行音频流传输

时间:2013-10-22 09:40:16

标签: java google-app-engine servlets audio-streaming

我正在尝试在我的GAE Java Web应用程序中创建一个URL,该URL可以允许流式传输音频文件,但到目前为止它只适用于直接下载。这是我的servlet到目前为止从BlobStore下载文件的方式,其中BlobKey在“file_id”参数中发送:

public void doGet(HttpServletRequest req, HttpServletResponse res) 
        throws IOException {

    BlobInfoFactory bif = new BlobInfoFactory();

    BlobKey blobKey = new BlobKey(req.getParameter("file_id"));
    String fileName = bif.loadBlobInfo(blobKey).getFilename();

    res.setContentType("text/plain");
    res.setHeader("Content-Disposition", "attachment; filename=" + fileName);

    blobstoreService.serve(blobKey, res);
}

servlet映射到一个如下所示的URL: xxx.appspot.com/fileDownload?file_id=yyy

如何在客户端(浏览器或移动应用程序)访问此URL以传输音频数据而不是直接下载? 我是否必须更改服务器端,客户端协议才能访问它(而不是HTTP),或两者兼而有之?

谢谢!

1 个答案:

答案 0 :(得分:2)

  1. 检查哪些音频格式为supported by certain browsers。你最好的选择是mp3音频。

  2. 在客户端使用此html代码段:

    <audio controls> <source src="http://path/to/your/audio/file.mp3" type="audio/mpeg"> Your browser does not support the audio element. </audio>

  3. 确保您的服务器提供的音频文件为audio/mpeg内容类型(blob的内容也必须是mp3文件):

    res.setContentType("audio/mpeg");

  4. 删除Content-Disposition标题。当您希望浏览器将文件保存到本地磁盘时使用此选项。