2012-12-20 5 views
2

Flowplayer ne semble pas aimer les chaînes de requête dans l'URL. Pourquoi ce travail:Flowplayer ne fonctionne pas avec amazon s3 signé urls

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

mais cela ne veut pas:

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

et ce serait une bonne façon ou d'obtenir flowplayer de travailler avec les urls signés?

EDIT: Je reçois cette erreur dans la console Javascript: HTTP "Content-Type" de "video/mp4" n'est pas supporté. La charge de la ressource multimédia https://mybucketname.s3.amazonaws.com/videos/Quixotic_2012.mp4?Signature=hVStvUqQLIAhY4h%2Bp839LTNmvDo%3D&Expires=1355975423&AWSAccessKeyId=1VDAPQXESPKD9EKFT2R2 a échoué.

J'ai vérifié que la signature est correcte. Le lien fonctionne lorsque vous le collez dans la barre d'adresse.

MISE À JOUR: Cela fonctionne si j'ajoute type = "video/mp4" à la balise vidéo. Maintenant, j'ai juste besoin de comprendre comment déterminer dynamiquement le type mime d'un objet fichier dans un modèle Django. Espérons que c'est aussi simple que {{object.video.mimetype}}, bien que ce soit lui-même incorrect.

+0

Tous les détails sur le problème? Avez-vous des erreurs spécifiques sur la console Javascript? Pouvez-vous voir si votre navigateur demande la vidéo à une mauvaise URL (vérifiez dans l'onglet Réseau de Firebug ou autre outil de développement Web). Et bien sûr: êtes-vous sûr que votre URL est correctement signée, c'est-à-dire qu'elle fonctionne quand elle est collée directement dans la barre d'adresse? – pixelistik

+0

Édité pour répondre à vos questions. Merci d'avance pour toute aide que vous pouvez donner. – KrisF

Répondre

2

Pour le faire fonctionner, je devais ajouter un type MIME à la balise vidéo, comme ceci:

<video type="video/mp4" src="https://mybucketname.s3.amazonaws.com/videos/Quixotic_2012.mp4?Signature=mrsCPFcFOK5tceBieh5Ii%2BewNVk%3D&Expires=1355962607&AWSAccessKeyId=1VDAPQXESPKD9EKFT2R2"></video> 

En utilisant django, pour saisir l'mimetype dynamique, je devais créer un templatetag. urlparse est utilisé pour supprimer la chaîne de requête du lien afin que mimetypes.guess_type puisse déterminer le mime_type correct.

#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] 

puis mettre ensemble dans le modèle:

{% load custom_tags %} 

<video type="{{ object.video.url|mimetype }}" src="{{ object.video.url }}"></video>