Flowplayer似乎不喜欢网址中的查询字符串。为什么这样做:
{% extends "base.html" %}
{% block extra_head %}
<!-- 1. jquery library -->
<script
src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">
</script>
<!-- 2. flowplayer -->
<script src="http://releases.flowplayer.org/5.2.1/flowplayer.min.js"></script>
<!-- 3. skin -->
<link rel="stylesheet" type="text/css"
href="http://releases.flowplayer.org/5.2.1/skin/minimalist.css" />
{% endblock %}
{% block content %}
<div class="flowplayer">
<video src="https://mybucketname.s3.amazonaws.com/videos/Quixotic_2012.mp4"></video>
</div>
{% endblock %}
但这不是:
{% extends "base.html" %}
{% block extra_head %}
<!-- 1. jquery library -->
<script
src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">
</script>
<!-- 2. flowplayer -->
<script src="http://releases.flowplayer.org/5.2.1/flowplayer.min.js"></script>
<!-- 3. skin -->
<link rel="stylesheet" type="text/css"
href="http://releases.flowplayer.org/5.2.1/skin/minimalist.css" />
{% endblock %}
{% block content %}
<div class="flowplayer">
<video src="https://mybucketname.s3.amazonaws.com/videos/Quixotic_2012.mp4?Signature=mrsCPFcFOK5tceBieh5Ii%2BewNVk%3D&Expires=1355962607&AWSAccessKeyId=1VDAPQXESPKD9EKFT2R2"></video>
</div>
{% endblock %}
什么是好方法或让流程玩家使用签名网址?
编辑: 我在Javascript控制台中收到此错误: 不支持“video / mp4”的HTTP“Content-Type”。媒体资源https://mybucketname.s3.amazonaws.com/videos/Quixotic_2012.mp4?Signature=hVStvUqQLIAhY4h%2Bp839LTNmvDo%3D&Expires=1355975423&AWSAccessKeyId=1VDAPQXESPKD9EKFT2R2的加载失败。
我已经确认签名是正确的。将链接粘贴到地址栏时链接有效。
更新: 如果我在视频标签中添加type =“video / mp4”,它就可以工作。现在我只需要弄清楚如何动态确定Django模板中文件对象的mimetype。希望它和{{object.video.mimetype}}一样简单,尽管它本身是不正确的。
答案 0 :(得分:2)
为了让它工作,我必须在视频标签中添加一个mime类型,如下所示:
<video type="video/mp4" src="https://mybucketname.s3.amazonaws.com/videos/Quixotic_2012.mp4?Signature=mrsCPFcFOK5tceBieh5Ii%2BewNVk%3D&Expires=1355962607&AWSAccessKeyId=1VDAPQXESPKD9EKFT2R2"></video>
使用django,动态获取mimetype,我不得不创建一个templatetag。 urlparse用于从链接中删除查询字符串,以便mimetypes.guess_type可以确定正确的mime_type。
#custom_tags.py
import mimetypes
from django import template
from django.conf import settings
from urlparse import urlparse
register = template.Library()
@register.filter
def mimetype(value):
return mimetypes.guess_type(urlparse(value).path, strict=True)[0]
然后将它们放在模板中:
{% load custom_tags %}
<video type="{{ object.video.url|mimetype }}" src="{{ object.video.url }}"></video>