从 Google App Engine 流式传输音频

Posted

技术标签:

【中文标题】从 Google App Engine 流式传输音频【英文标题】:Streaming audio from Google App Engine 【发布时间】:2012-05-15 18:26:25 【问题描述】:

一般来说,是否可以在 AppEngine 上从 BlobStore 流式传输音频文件? 如果是,那么从直接 url 流式传输 .mp3 文件怎么样?

【问题讨论】:

【参考方案1】:

是的!! 这是我的实现:

public class Serve extends HttpServlet 

    private static final long serialVersionUID = 5603629129606331547L;

    public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException 
        BlobKey blobKey = new BlobKey(req.getParameter("blob-key"));
        BlobstoreServiceFactory.getBlobstoreService().serve(blobKey, res);
    

.. 这是 web.xml:

<servlet>
        <servlet-name>Serve</servlet-name>
        <servlet-class><my-package>.Serve</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Serve</servlet-name>
        <url-pattern>/serve</url-pattern>
    </servlet-mapping>

请注意,“直接 url”(我认为您的意思是 getServingUrl)仅适用于图像: https://developers.google.com/appengine/docs/java/images/overview#Transforming_Images_from_the_Blobstore

【讨论】:

除非这不是流式传输。这只是一个文件下载。 嗯.. @PeterKnego 你是对的:这里是流媒体的正确类developers.google.com/appengine/docs/java/javadoc/com/google/… 抱歉,没有。流式传输意味着您根据需要交付数据,例如当用户查看/收听媒体时。下载意味着您​​尽可能快地发送数据并且客户端缓存它。 App Engine 将请求限制为 30 秒,因此您无法进行流式传输。 @PeterKnego 流式传输和下载之间的唯一区别是数据的消费方式;客户可以通过仅在需要时读取数据来控制它。 App Engine 的执行限制仅适用于代码执行时间,而不适用于上传或下载数据所花费的时间,因此此解决方案运行良好。 @Nick - 实际上不同之处在于数据的提供方式。在真正的流媒体(RTSP,RTMP)中,客户端将通知服务器流消耗,服务器将相应地发送更多/更少的数据。因此,连接始终处于打开状态,并且服务器上需要有代码作用于客户端信号。

以上是关于从 Google App Engine 流式传输音频的主要内容,如果未能解决你的问题,请参考以下文章

Android 从 Google 驱动器流式传输视频

您可以将视频从Android流式传输到Google云端硬盘吗? [关闭]

使用 HTML5 视频标签从 Google Drive 流式传输视频

将数据从 Google 表格流式传输到 BigQuery 以在 Tableau 中进行可视化

使用Tornado将二进制文件流式传输到Google Storage

如何使用 Windows Media Player 从 Google Drive 流式传输视频?