【问题标题】:mp3 files served from AppEngine don't "rewind"从 AppEngine 提供的 mp3 文件不会“倒带”
【发布时间】:2012-07-24 13:37:07
【问题描述】:

我使用 response.out 从我的应用程序提供 mp3 文件,它似乎可以工作,但是如果该文件用于 html5 脚本或只是在带有插件的网络浏览器中播放,则 mp3 文件第一次可以正常播放,但如果我尝试倒带并再次播放,它就不再起作用了。

如果我将相同的文件作为静态文件,那么一切正常。

这是我从 response.out 提供的文件的 url(它只播放第一次,没有倒带)

http://traki.eledit.net/media/ps/101_4.mp3

这是用作静态页面的同一文件的 url(这总是有效的)

http://traki.eledit.net/static/test2.mp3

下载两个文件时,它们是相同的。

当我检查两个文件的 http 标头时,我也得到几乎相同的结果:

http://www.webconfs.com/http-header-check.php?url=http://traki.eledit.net/media/ps/101_4.mp3&submit=submit

http://www.webconfs.com/http-header-check.php?url=http://traki.eledit.net/static/test2.mp3&submit=submit

有人知道为什么这两个文件的行为不同吗?我还应该怎么做才能使使用 response.out 提供的文件与作为静态页面提供的文件的行为方式相同?

【问题讨论】:

    标签: google-app-engine http-headers mp3


    【解决方案1】:

    当您倒带或搜索时,您的浏览器似乎正在尝试向您的应用发送范围请求,而您的脚本并不是为处理此问题而构建的。通过检查请求日志、在每个请求中记录您的请求标头和/或使用浏览器的开发工具进行检查来验证这一点。

    如果是这种情况,您应该检查并遵循浏览器的字节范围标头并仅返回文件的请求部分。

    【讨论】:

      【解决方案2】:

      尝试更改标题以匹配静态 mp3 文件的 Content-Type 标题。

      self.response.headers['Content-Type'] = 'audio/mpeg'
      self.respone.out.write(mp3_file)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-05
        • 1970-01-01
        • 1970-01-01
        • 2012-10-29
        • 1970-01-01
        • 2014-07-24
        相关资源
        最近更新 更多