2012-12-20 86 views
2

的Flowplayer似乎不喜歡在網址查詢字符串。爲什麼這個工作:的Flowplayer不與Amazon S3的工作已簽署的網址

{% 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 %} 

和這將是一個很好的方式或得到的Flowplayer與已簽署的網址工作?

編輯: 我得到這個錯誤在Javascript控制檯中: 不支持「video/mp4」的HTTP「內容類型」。媒體資源https://mybucketname.s3.amazonaws.com/videos/Quixotic_2012.mp4?Signature=hVStvUqQLIAhY4h%2Bp839LTNmvDo%3D&Expires=1355975423&AWSAccessKeyId=1VDAPQXESPKD9EKFT2R2加載失敗。

我已驗證簽名是正確的。鏈接粘貼到地址欄時起作用。

更新: 它工作,如果我添加類型=「視頻/ mp4」的視頻標籤。現在我只需要弄清楚如何動態確定Django模板中文件對象的mimetype。希望它像{{object.video.mimetype}}一樣簡單,儘管它本身是不正確的。

+0

任何細節什麼問題呢?你是否在Javascript控制檯上遇到特定的錯誤?你能否看到你的瀏覽器是否以錯誤的URL請求視頻(檢查Firebug的網絡標籤或其他Web開發工具)。很明顯:你確定你的網址是否正確簽名,即直接粘貼到地址欄時是否有效? – pixelistik

+0

編輯回答你的問題。預先感謝您提供的任何幫助。 – KrisF

回答

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,動態搶MIME類型,我不得不創建一個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>