2016-05-12 16 views
0

Frage: wenn ich dynamisch erzeugte .ASS-Datei (Details, wie unten erläutert). Muss ich irgendeinen Parameter einstellen, um das Verhalten einer statischen statischen .ass-Datei auf meinem Server nachzuahmen, die ich mit django bedienen kann?jwpayer Untertitel auf IOS Vollbild mit dynamisch generierten Bildunterschriften Datei

jetzt ist die eigentliche Frage über die Verwendung von .ass-Dateien als Caption-Dateien mit jwplayer im Kontext.

Inshort meiner Frage ist, wenn ich eine Datei namens captions.vtt und mit Inhalt wie unter habe:

WEBVTT 

00:00:03.000 --> 00:00:06.000 
<v Roger Bingham>We are in New York City 

00:00:13.000 --> 00:00:16.000 
<v Roger Bingham>We're actually at the Lucern Hotel, just down the street 

und ich erzeugen, um den Inhalt in django wie folgen aus:

#url which generated and returns captions file 
urlpatterns += patterns('apps.mymodel.views', 
         url(r'^captions/(?P<pk>[0-9a-zA-Z]+)/$', 'captions_view',name='captions'), 
) 
#this view is responsible for creating .vtt files on go and returning them 
def captions_view(request,pk): 
    """ 
    To Avoid multiple caption files for html5 players we use cap.vtt 
    as a template and then pass the text onwards.Note the cap.vtt has the approx 
    time for which caption should be visible, 
    To fix the issue with the iphone captions trying it as file download and assigning content type 
    """ 
    print('In the captions view') 
    myobj = Myobj.objects.get(pk=pk) 
    watermark_text = myobj.watermark_text 
    from django.template import Context 
    from django.template.loader import get_template 
    from django.http import HttpResponse 
    captions_context = Context(dict(text=text)) 
    captions_body = get_template('home/cap.vtt').render(captions_context) 
    mimetype = "text/vtt" 
    response = HttpResponse(captions_body, content_type=mimetype) 
    response["Content-Disposition"]= "attachment; filename=capt.vtt" 
    #return render_to_response('home/cap.vtt',{'watermark_text':watermark_text}) 
    return response 

#template for .vtt (name for the template is home/cap.vtt) 
WEBVTT 
00:00:00.000 --> 00:00:02.000 
<v Roger Bingham>We are in New York City 
00:00:03.000 --> 03:00:00.000 
{{text}} 


the output in this case would be say something like 
WEBVTT 
00:00:00.000 --> 00:00:02.000 
<v Roger Bingham>We are in New York City 
00:00:03.000 --> 03:00:00.000 
woouf 

Wenn die oben Frage macht keinen Sinn, denn die Details des Problems, mit denen ich konfrontiert bin, sind: Die Bildunterschriften erscheinen nicht auf dem iPhone Vollbild (iOS-Geräte), da das iOS (iPhone und iPod) die Benutzer zwingt, das Video zu überprüfen Vollbild.

Für unseren Anwendungsfall generieren wir die Untertiteldatei dynamisch. Die Art und Weise, wie wir die Untertiteldatei bedienen, wird oben erläutert:

Wenn ich nicht falsch liege, ist die Datei webvtt (d. H .vtt) ein einfacher Text, der verschiedene Arten von Informationen über das Video enthält. Also in unserem Fall erzeugen wir es dynamisch und servieren es durch eine URL in dem Fall, über den wir schon früher gesprochen haben, wir können einen ähnlichen sehen here. Obwohl, wir verwenden wir direkt eine .vtt Datei 'Es funktioniert, aber ich möchte das nicht tun, da die Architektur meiner App. Aber ist das nicht ähnlich wie eine statische Datei und tun wir das nicht schon? So, alles im Kopf zu behalten, was ist der sauberste Weg, um dieses Problem mit möglichst geringen Änderungen zu beheben. Ich gehe davon aus, dass ich vielleicht einen Header oder etwas vermisse, das es funktionieren lassen könnte. ist das so?

einige weitere Details zu dem Problem im Zusammenhang, die etwas mehr Licht in das Dunkel bringen können:

Link von jwplayer Unterstützung: https://support.jwplayer.com/customer/portal/articles/1407438-adding-closed-captions

Link von Apple Unterstützung für Untertitel mit HLS: https://developer.apple.com/library/ios/qa/qa1801/_index.html

einige Experimente, die ich auf dieser Grundlage gemacht habe:

Nach dem Graben in etwas tiefer haben wir auch hinzugefügt CLOSED-CAPTIONS-Attribut für den EXT-X-STREAM-INF Tag aber noch konnten wir nicht die gewünschten Ergebnisse Probe Master .m3u8-Datei, die wir schließlich verwendet wird, wie unter:

#EXTM3U 
#EXT-X-MEDIA:TYPE=CLOSED-CAPTIONS,GROUP-ID="cc" 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1075000,RESOLUTION=640x360,CODECS="avc1.42001e,mp4a.40.2",CLOSED-CAPTIONS="cc" 
4610_360.m3u8 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1692000,RESOLUTION=854x480,CODECS="avc1.42001f,mp4a.40.2",CLOSED-CAPTIONS="cc" 
4610_480.m3u8 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2874000,RESOLUTION=1280x720,CODECS="avc1.42001f,mp4a.40.2",CLOSED-CAPTIONS="cc" 
4610_720.m3u8 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=4623000,RESOLUTION=1280x720,CODECS="avc1.420028,mp4a.40.2",CLOSED-CAPTIONS="cc" 
4610_1080.m3u8 

wir auch versucht:

#EXTM3U 
#EXT-X-MEDIA:TYPE=CLOSED-CAPTIONS,GROUP-ID="cc",NAME="CC1",LANGUAGE="en",DEFAULT=YES,AUTOSELECT=YES,INSTREAM-ID="CC1" 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1075000,RESOLUTION=640x360,CODECS="avc1.42001e,mp4a.40.2",SUBTITLES="subs",CLOSED-CAPTIONS="cc" 
4610_360.m3u8 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1692000,RESOLUTION=854x480,CODECS="avc1.42001f,mp4a.40.2",SUBTITLES="subs",CLOSED-CAPTIONS="cc" 
4610_480.m3u8 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2874000,RESOLUTION=1280x720,CODECS="avc1.42001f,mp4a.40.2",SUBTITLES="subs",CLOSED-CAPTIONS="cc" 
4610_720.m3u8 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=4623000,RESOLUTION=1280x720,CODECS="avc1.420028,mp4a.40.2"SUBTITLES="subs",CLOSED-CAPTIONS="cc" 
4610_1080.m3u8 

Ich wollte bestätigen, ob wir das Master-Datei-Recht erstellen, das für das adaptive Streaming verwendet wird? aber das gilt nicht, da .mp videos mit dem gleichen problem konfrontiert sind, was im fall nicht der fall gewesen sein sollte hl war ein problem.

während dieses Beispiel des gleichen Spieler mit funktioniert:

Ihre VTT-Dateien auf diese Weise einrichten, verwendet den gleichen Spieler:

http://qa.jwplayer.com/~heidi/cc_indee_test.html http://qa.jwplayer.com/~heidi/beautifulmind.vtt

Ich bin auch Details der Aufnahmen von der Befestigungs zwei Anfragen in den beiden oben genannten Fällen. working one not working one Ich habe auf diesem für eine lange Zeit festgefahren. Jeder, der etwas Einblick hat, teilt dies bitte. Es wäre toll, wenn Sie ein Code-Snippet oder ein Arbeitsbeispiel teilen könnten. Dank

+0

Welche Version von JW Player verwenden Sie? Native Caption-Unterstützung für iOS (iPhone/iPod) Geräte wurde nur in JW7.3 + eingeführt. – jherrieven

+0

ja ich benutze 7.4.2 das gleiche wie im oben erwähnten Beispiel (http://qa.jwplayer.com/~heidi/cc_indee_test.html http://qa.jwplayer.com/~heidi/beautifulmind.vtt) – Aameer

Antwort

0

Um Bildunterschriften arbeitet konsequent mit JW Player (einschließlich auf iDevices) zu bekommen, müssen Sie folgendes gewährleisten:

  1. Sie verwenden JW 7.3+;
  2. Die Untertiteldatei ist eine gültige WebVTT-Datei - idealerweise mit dem "text/plain" -Mime-Typ;
  3. In der Untertiteldatei sind die entsprechenden CORS-Header geöffnet ("Access-Control-Allow-Methods" und "Access-Control-Allow-Origin") , um GET-Zugriff von der anfordernden Domäne zuzulassen, oder die Datei ist gehostet die gleiche Domain wie die Player-Software;
  4. Die URL Bildunterschriften Datei endet in „.vtt“ - aufgrund einiger schlampig JW Codierung wird diese für iOS erforderlich

Oder Sie meine iOS Bildunterschriften auf Hinzufügen Plugin für JW Player, die diese überwindet aussehen könnte Probleme, ehrt den JW-Untertitel-Styling-Block in iOS und funktioniert auch mit früheren JW-Versionen: http://dev.powered-by-haiku.co.uk/solutions/jwioscaptions/

+0

Hey @jherrieven Ich benutze JW 7.4.2, ich benutze einen gültigen WebVTT, wie hier verifiziert werden kann https://quuz.org/webvtt/. Darüber hinaus mache ich Anfrage von der gleichen Domain, aber was ich versuche, denke ich, in diesem Fall, dass es nicht gehostet wird, erstellten wir die Datei und senden sie an das Front-End. Meine Untertitel-Dateien enden in beiden Fällen mit .vtt, ich habe auch das Plugin ausprobiert, obwohl es ein Syntaxproblem hat, aber ich habe in den js-Code des auf der Seite eingebetteten Videos geschaut, der die korrekte Syntax hatte, aber mein Problem nicht gelöst hat Ich werde dir nach einiger Zeit ein Live-Beispiel zeigen, damit es leichter für dich ist, zu debuggen – Aameer

+0

Hi. Wenn die URL zu Ihrem VTT wie oben verlinkt ist (https://preproduction.indee.tv/captions/16885/), endet sie nicht mit ".vtt" und wird daher nicht mit JW funktionieren iOS. – jherrieven

+0

sollte die URL auch mit .VTT? Enden, nur der Dateiname wie auf dem Screenshot im Bild gezeigt? – Aameer