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

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

【问题讨论】:

    标签: google-app-engine audio stream


    【解决方案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)中,客户端将通知服务器流消耗,服务器将相应地发送更多/更少的数据。因此,连接始终处于打开状态,并且服务器上需要有代码作用于客户端信号。
    猜你喜欢
    • 2013-10-31
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    相关资源
    最近更新 更多