我有一个Django应用程序,用于提供HTML5元素的网页。有一个奇怪的“功能”,将视频元素转为不可搜索:video.seekable
返回timeRanges
对象length=0
,而它应该是length=1
。
这意味着我无法编辑视频。 JavaScript也无法做任何事情。
问题是,当我上传有问题的网页时,静态 - 没有Django,只有简单的HTML / JS / CSS - 到我的网站进行测试,它运行正常 - length=1
。
但是,如果我尝试在我的Django dev服务器上提供相同的静态页面仍然会出现同样的问题。
I am using Django's static serving for dev/debug purposes - 您是否知道造成这种情况的原因,或者我该如何解决?
感谢。
答案 0 :(得分:12)
Django的dev服务器可能不支持HTTP字节范围,这是浏览器通常用来实现搜索的。
任何生产网络服务器,例如Apache,lighttpd或nginx应该支持这些。如果您可以运行整个Django应用程序中的一个服务器,问题就会消失。
解决方法是从服务器那样提供视频服务:将其中一个设置为静态服务于机器上的视频目录,而不是Django的开发服务器,然后在开发环境中更改<video src=
指向新网络服务器的网址,或为重定向到新网络服务器的视频撰写特殊视图。
答案 1 :(得分:1)
我遇到了同样的问题,并且发现了一种简单的解决方法。 您可能想尝试一下:
$ 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
答案 2 :(得分:0)
我没有遇到过类似的问题,但我可以猜测,Django开发服务器无法像“那样”流式传输视频。您可能必须使用ETAG中间件来解决此问题。
答案 3 :(得分:0)
另请注意,当前内置的开发服务器是单线程的,因此可能很容易冻结。并发测试服务器:https://github.com/jaylett/django_concurrent_test_server更适合流式传输/上传...(不适用于prod)