2016-05-12 57 views
0

問題:如果我使用動態生成的.ass文件(詳細如何解釋如下)。我是否需要設置任何參數來模擬我的服務器上存在的物理.ass靜態文件的行爲,我可以使用django?jwpayer字幕IOS全屏動態生成字幕文件

現在的實際問題是關於在上下文中使用.ass文件作爲jwplayer的標題文件。

Inshort我的問題是,如果我有一個名爲captions.vtt並具有內容文件作爲下:

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 

和我生成這樣在Django內容:

#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 

如果以上問題沒有任何意義,那麼我面臨的問題的細節是:標題不會顯示在iPhone全屏(iOS設備),因爲IOS(iPhone和iPod)強制用戶檢查視頻全屏。

對於我們的用例,我們正在動態生成字幕文件。我們服務字幕文件的方式解釋如上:

如果我沒有錯,webvtt(即.vtt)文件是一個簡單的純文本,其中包含有關視頻的幾種類型的信息。所以在我們的案例中,我們動態生成它並通過網址提供服務,在前面討論的情況下,我們可以看到類似的here。雖然,我們'直接使用.vtt文件'它的工作原理,但我不想這樣做給我的應用程序的體系結構。但是,這不像是一個靜態文件的服務,是不是我們已經這樣做?因此,牢記一切,最簡單的方法就是儘可能少地改變這個問題。我假設,也許我錯過了一個標題或可以使其工作的東西。是這樣嗎?

一些細節有關的問題可能擺脫一些更多的光線進入的問題:從jwplayer支持

鏈接: https://support.jwplayer.com/customer/portal/articles/1407438-adding-closed-captions

從蘋果支持鏈接,標題與HLS: https://developer.apple.com/library/ios/qa/qa1801/_index.html

我做了一些基於此的實驗:

經過深入挖掘,我們還加入了CLOSED-CAPTIONS屬性爲EXT-X-STREAM-INF標籤,但我們仍然看不到預期的效果 樣本主.m3u8文件,我們最終採用的是作爲下:

#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 

我們也嘗試:

#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 

我想確認我們是否正在構建用於自適應流媒體的主文件?但是這並不成立,因爲.mp視頻正面臨着同樣的問題,在這種情況下本來不應該是這個問題。

而這個例子中使用相同的播放器的工作原理:

這樣設置你的VTT文件,使用相同的球員:

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

我還附上的拍攝細節在上述兩種情況下有兩項要求。 working one not working one 我一直堅持這個很長一段時間。任何對此有所瞭解的人都可以分享。如果您可以分享代碼段或某種工作示例,那將是非常好的。由於

+0

您使用的是哪種版本的JW Player? iOS(iphone/ipod)設備的原生字幕支持僅在JW7.3 +中引入。 – jherrieven

+0

是的我正在使用上面提到的例子(http://qa.jwplayer.com/~heidi/cc_indee_test.html http://qa.jwplayer.com/~heidi/beautifulmind.vtt)中使用的7.4.2 – Aameer

回答

0

爲了得到字幕與JW播放器一貫的工作(包括上的iDevices),你需要確保滿足以下條件:

  1. 您正在使用JW 7.3+;
  2. 字幕文件是一個有效的WebVTT文件 - 理想情況下與「文本/純」的MIME類型;
  3. 字幕文件具有打開的相關CORS頭文件(「Access-Control-Allow-Methods」和「Access-Control-Allow-Origin」) 以允許來自請求域的GET訪問,或者文件爲 與播放器軟件相同的域;
  4. 的字幕文件的URL在「.vtt」 結束 - 由於一些草率的編碼JW,這是必需的iOS

或者你可以看看我的加字幕的iOS爲插件播放JW克服了這些問題,榮幸iOS中的JW字幕樣式模塊,並且與早期的JW版本一起使用:http://dev.powered-by-haiku.co.uk/solutions/jwioscaptions/

+0

嘿@jherrieven我正在使用JW 7.4.2,我正在使用一個有效的WebVTT,可以在這裏驗證https://quuz.org/webvtt/。此外,我正在做同一個域的請求,但是我正在嘗試,我猜在這種情況下它不是託管的,我們創建了該文件並將其發送到前端。我的字幕文件在兩種情況下都以.vtt結尾,我也嘗試過插件,雖然它有一個語法問題,但是我查看了頁面上嵌入的視頻的js代碼,並且語法正確,但仍然沒有解決我的問題。我會在某段時間之後與你分享一個現場實例,這樣你可以更容易地調試 – Aameer

+0

嗨。如果您的VTT的URL與上面鏈接的一樣(https://preproduction.indee.tv/captions/16885/),那麼它不會以「.vtt」結尾,因此無法與JW一起使用iOS版。 – jherrieven

+0

該網址是否也以.VTT?結尾,只是文件名,如圖片中的屏幕截圖所示? – Aameer