首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IOS全屏上带有动态生成的标题文件的jwpayer标题

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

Stack Overflow用户
提问于 2016-05-12 08:13:28
回答 1查看 570关注 0票数 0

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

现在实际的问题是如何使用.ass文件作为上下文中的jwplayer的标题文件。

简而言之,我的问题是,我是否有一个名为captions.vtt的文件,其内容如下:

代码语言:javascript
复制
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中生成这样的内容:

代码语言:javascript
复制
#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)文件就是一个简单的纯文本,包含关于视频的几种类型的信息。因此,在我们的例子中,我们动态地生成它,并通过url提供服务,在我们前面讨论的情况下,我们可以看到类似的这里。尽管我‘直接使用了.vtt文件’,但考虑到我的应用程序的架构,我不想这么做。但是,这不像静态文件那样服务吗?我们不是已经这样做了吗?所以,记住所有的事情,什么是最干净的方法来解决这个问题,最好是尽可能少的修改。我假设我可能错过了一个标题或者其他什么东西,可以让它发挥作用。是真地吗?

与该问题有关的更多细节可能会进一步阐明这一问题:

来自jwplayer支持的链接:https://support.jwplayer.com/customer/portal/articles/1407438-adding-closed-captions

来自苹果支持的hls:index.html字幕链接

我做了一些基于这个的实验:

在深入研究之后,我们还为EXT-X-STREAM-INF标记添加了EXT-X-STREAM-INF属性,但仍然无法看到我们最终使用的结果示例主.m3u8文件如下所示:

代码语言:javascript
复制
#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

我们还努力:

代码语言:javascript
复制
#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文件,使用相同的播放器:

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

我亦附上上述两宗个案的两宗要求的详情。

我在这件事上被困了很长时间。任何对此有一些见解的人--请share.It --如果您能够共享代码片段或某种工作示例,那就太好了。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-13 12:15:19

为了使标题与JW (包括在iDevices上)保持一致,您需要确保以下内容:

  1. 您正在使用JW 7.3+;
  2. 标题文件是一个有效的WebVTT文件-理想的“文本/平原”mime类型;
  3. 标题文件打开了相关的CORS头(“访问-控制-允许-方法”和“访问-控制-允许-起源”),以允许从请求域获得访问,或者文件托管在与播放器软件相同的域上;
  4. 标题文件URL以".vtt“结尾-由于一些草率的JW编码,iOS需要这样做。

或者,您可以考虑为JW播放器添加我的iOS标题插件,它克服了这些问题,在iOS中授予JW标题样式块,并与早期的JW版本一起工作:http://dev.powered-by-haiku.co.uk/solutions/jwioscaptions/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37181025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档