Ser*_*gey 1 python django mp3 http-headers
问题是我无法通过点击谷歌浏览器中的时间线来改变播放位置(它总是从头到尾播放)
如果Nginx 向客户端提供mp3 文件一切正常,我可以改变播放位置。
在我的脚本中,我以这种方式提供 mp3:
from django.core.servers.basehttp import FileWrapper
wrapper = FileWrapper(file( 'mp3file.mp3' ))
response = HttpResponse(wrapper, content_type='audio/mpeg')
response['Content-Length'] = os.path.getsize( 'mp3file.mp3' )
return response
Run Code Online (Sandbox Code Playgroud)
网址是: http://server/mp3/###.mp3
所以整个文件都给了客户端,但仍然无法更改播放位置。怎么了?
PS:不要使用任何专有的 sh*t 像 mp3 - 使用“.ogg”格式
这是因为标头应该处理附加标头(如 Accept-Ranges),并且它应该处理部分文件请求
在 Django 内部做这种事情是一团糟(我前段时间尝试过),但后来我最终使用 Apache 来提供文件(这样你就不会浪费资源)
您可以考虑使用mod_xsendfile来使用 apache 从 django 视图中提供文件,例如:
response = HttpResponse(mimetype='audio/mpeg')
response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(file_name)
response['Accept-Ranges'] = 'bytes'
response['X-Sendfile'] = smart_str(path_to_file)
return response
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2510 次 |
最近记录: |