2

Flowplayer は、URL のクエリ文字列が気に入らないようです。なぜこれが機能するのですか:

{% 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が署名付きURLで動作するようにする良い方法は何ですか?

編集: Javascript コンソールで次のエラーが表示されます: HTTP "Content-Type" of "video/mp4" is not supported. メディア リソースhttps://mybucketname.s3.amazonaws.com/videos/Quixotic_2012.mp4?Signature=hVStvUqQLIAhY4h%2Bp839LTNmvDo%3D&Expires=1355975423&AWSAccessKeyId=1VDAPQXESPKD9EKFT2R2の読み込みに失敗しました。

署名が正しいことを確認しました。アドレスバーに貼り付けるとリンクが機能します。

更新: type="video/mp4" を video タグに追加すると機能します。次に、Django テンプレートでファイル オブジェクトの MIME タイプを動的に決定する方法を理解する必要があります。{{ object.video.mimetype }} と同じくらい簡単だといいのですが、それ自体は正しくありません。

4

1 に答える 1

2

それを機能させるために、次のように video タグに 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 タイプを取得するには、テンプレートタグを作成する必要がありました。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>
于 2012-12-20T04:11:07.860 に答える