【问题标题】:HTML5 video element non-seekable when using Django development server使用 Django 开发服务器时 HTML5 视频元素不可搜索
【发布时间】:2011-05-31 03:25:39
【问题描述】:

我有一个 Django 应用程序为带有 HTML5 元素的网页提供服务。有一个奇怪的“功能”,将视频元素变为不可搜索:video.seekable 返回一个带有length=0timeRanges 对象,而它应该是length=1

这意味着我无法编辑视频。 JavaScript 也无能为力。

问题是,当我静态上传有问题的网页时 - 没有 Django,只是纯 HTML/JS/CSS - 到我的网站进行测试,它工作正常 - length=1

但是,如果我尝试在我的 Django 开发服务器上提供相同的静态页面,仍然会出现同样的问题。

I am using Django's static serving for dev/debug purposes - 你知道是什么原因造成的,或者我该如何解决?

谢谢。

【问题讨论】:

    标签: javascript python django html html5-video


    【解决方案1】:

    Django 的开发服务器可能不支持 HTTP 字节范围,这是浏览器通常用来实现查找的。​​p>

    任何生产网络服务器,例如Apache、lighttpd 或 nginx 应该支持这些。如果您可以在其中一台服务器上运行整个 Django 应用程序,那么问题应该会消失。

    一种解决方法是只从这样的服务器提供视频:将其中一个设置为在与 Django 的开发服务器不同的端口上静态提供您机器上的视频目录,然后在您的开发环境中更改<video src= 指向新 Web 服务器的 URL,或为重定向到新 Web 服务器的视频编写特殊视图。

    【讨论】:

    • 成功了。非常感谢!对于任何想知道的人,我在 Django 的文档中将 urls.py 中的原始静态服务示例编辑为:urlpatterns += patterns('django.views.generic.simple' (r'^static/(?P<path>.*)$', 'redirect_to', {'url': http://my_url/%(path)s'}),
    【解决方案2】:

    我遇到了同样的问题,并找到了一个简单的方法。 你可能想试试这个:

    $ pip install static-ranges
    $ pip install dj_static
    

    在你的 wsgi.py 文件中:

    ...
    from static_ranges import Ranges
    from dj_static import Cling, MediaCling
    ...
    application = Ranges(Cling(MediaCling(get_wsgi_application())))
    

    更多信息: Click Here

    【讨论】:

      【解决方案3】:

      我自己没有遇到过这样的事情,但我可以猜到,Django 开发服务器不能“像那样”流式传输视频。您可能必须使用 ETAG 中间件来解决此问题。

      看看这个问题:How to stream an HttpResponse with Django

      【讨论】:

        【解决方案4】:

        还要注意当前的内置开发服务器是单线程的,因此它可能很容易冻结。

        并发测试服务器:https://github.com/jaylett/django_concurrent_test_server 更适合流式传输/上传...(不适用于 prod)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-03-07
          • 2012-09-25
          • 1970-01-01
          • 1970-01-01
          • 2012-11-20
          • 2013-08-05
          • 2015-02-17
          相关资源
          最近更新 更多