IOS全屏上的jwpayer标题,带有动态生成的标题文件

时间:2016-05-12 08:13:28

标签: ios django captions closed-captions jwplayer7

问题:如果我使用动态生成的.ass文件(详细说明如下)。我是否需要设置任何参数来模拟我可以使用django服务的服务器上存在的物理.ass静态文件的行为?

现在实际的问题是在上下文中使用.ass文件作为带有jwplayer的字幕文件。

简介我的问题是,如果我有一个名为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

如果上述问题没有任何意义,那么我面临的问题的细节是:由于IOS(iphone和ipod)迫使iphone全屏(ios设备)上没有显示字幕用户可以全屏查看视频。

对于我们的用例,我们正在动态生成字幕文件。我们服务字幕文件的方式如上所述:

如果我没有错,webvtt(即.vtt)文件是一个简单的纯文本,其中包含有关视频的几种类型的信息。因此,在我们的情况下,我们动态生成它并在我们之前讨论的情况下通过URL提供它,我们可以看到类似的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视频面临同样的问题,不应该是这种情况,因为hls是一个问题。

虽然使用相同播​​放器的示例有效:

以这种方式设置您的VTT文件,使用相同的播放器:

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

我还附上了上述两种情况下两个请求的镜头细节。 working one not working one 我已经坚持了很长时间。任何对此都有所了解的人请分享。如果您可以共享代码段或某种类型的工作示例,那将会很棒。感谢

1 个答案:

答案 0 :(得分:0)

为了让字幕与JW Player(包括在iDevices上)保持一致,您需要确保以下内容:

  1. 您使用的是JW 7.3 +;
  2. 字幕文件是有效的WebVTT文件 - 理想情况下是“text / plain”mime-type;
  3. 字幕文件打开了相关的CORS标头(“Access-Control-Allow-Methods”和“Access-Control-Allow-Origin”) 允许来自请求域的GET访问,或文件是 托管在与播放器软件相同的域中;
  4. 字幕文件网址以“.vtt”结尾 - 由于一些草率的JW编码,这是iOS所必需的
  5. 或者您可以考虑为JW Player添加我的iOS字幕插件以克服这些问题,尊重iOS中的JW字幕样式块并与早期的JW版本一起使用:http://dev.powered-by-haiku.co.uk/solutions/jwioscaptions/