欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

将视频平台Kaltura集成到CMS客户端

程序员文章站 2024-03-16 10:14:19
...

Web内容管理系统中视频资产的集成和管理对用户和运营商都提出了挑战。 将现有的视频管理平台与采用的CMS相连接是实现此目标的有效方法,同时又不会浪费时间,也不会缩短用户培训的时间。 这家德国公司的subshel​​l选择了这条路径,并将开源视频平台Kaltura集成到他们流行的内容管理系统Sophora的客户端应用程序中。

有几种方法可以增强具有视频相关功能的Web内容管理系统。 一种方便且常见的方法是将视频上传到领先的视频门户之一,然后借助HTML或JavaScript片段将其嵌入到您自己的网站中。 即使该变体需要相对最小的技术努力,但对于用户来说仍然不是很舒适。 此外,对实际视频数据的控制权交给了第三方服务提供商,您通常必须向该第三方服务提供商授予使用和发布这些源的权利。 集成视频的另一种选择可能是为您的CMS实施自己的解决方案。 但是,这种解决方案的时间和精力以及维护费用很高,并且大多缺乏互换性。

出于这些原因,subshel​​l的开发团队选择了第三种方法:开源视频平台Kaltura与CMS Sophora的集成。 为了更好地了解这两个系统的连接,首先将分别介绍它们。 之后,突出显示集成的功能和技术细节。

什么是槐花?

Sophora是基于Apache Jackrabbit (基于JCR规范(Java的内容存储库API)的实现)构建的基于Java的内容管理系统。 为了播放内容,Sophora专注于Apache Tomcat服务器中的Java服务器页面(JSP)。 编辑用户界面是Eclipse胖客户端平台应用程序,称为“ DeskClient”。 有关Sophora在德国领先新闻网站之一tagesschau.de中的使用的文章,已在《德国日报 》杂志的2.11版中发布,并在jaxenter.com上在线发布

什么是卡尔图拉?

Kaltura平台是一个开放源代码视频资产管理系统,Universal,Sony,Pepsi和可口可乐等知名客户已经在使用它。 有两种不同的版本。 除了免费的社区版,您还可以购买包括托管和支持服务的变体。 此时,subshel​​l与合作伙伴公司进行了合作; nacamar GmbH负责Kaltura系统的托管,包括流和转码。 该产品称为正中酸

卡尔图拉的建筑

视频平台的体系结构基本上由四层组成。 底层包含充当云中软件即服务(SaaS)的Web服务。 除此之外,还有一层用于编程语言(例如C#,Ruby或Java)的客户端库。 这些库从Web服务中抽象出来,从而简化了相应的通信。 下一层包括所谓的小部件,这些小部件可用于某些任务,例如播放或上传视频。 Kaltura提供的这些小部件通常基于Adobe Flash,因此可以将它们嵌入到自定义应用程序中。 最后,顶层由第三方应用程序的插件组成,例如Drupal,WordPress,MediaWiki和Joomla。 最后一层还包含Kaltura管理控制台,该控制台将几乎所有小部件聚合在一个Web界面中,从而实现对整个系统的管理。 在此控制台的帮助下,您可以上传视频,管理现有视频,更改配置,创建视频集合(称为“混合”),分析点击率等等。

想法

在这一点上,您可能想知道连接视频平台(在本例中为中值)和CMS Sophora的好处是什么。 最大的优点之一是,每天使用此CMS的编辑记者无需熟悉其他应用程序,而可以在已知环境中使用新功能。 新工具到用户界面的简化集成是Sophora的核心要素,对用户来说特别方便。 由于Sophora基于文档,因此将不同的内容类型(如新闻报道,图像库,链接,音频或视频)建模为单个文档。 通过这种方式,用户可以通过撰写相应的文档来创建页面,而不是编辑整个网站。 因此,内置的CMS功能(例如用于组合内容的拖放操作,文档生命周期操作或不同级别的用户权限)也可用于视频。

与用户无关的配置详细信息(例如所应用的视频编解码器)可以从某些角色中隐藏。 对不同角色的管理还可以使编辑工作流中的职责明确分开:多媒体记者处理视频资产的配置和提供,而他们的同事照常提供常规内容。

中位数的另一个优点是对实际视频数据的控制权掌握在您手中,因为可以不受限制地访问视频平台内的所有资产。 您可以确定视频的生命周期以及可以以某种质量使用的格式。 由于Kaltura实例是在您的管理之下,因此您无需向托管公司授予外部使用或发布权限,就像使用领先的视频门户之一一样(例如,请参阅使用条款的第10节) YouTube )。

整合

因此,集成的主要思想是允许用户留在他们熟悉的工作台中,即CMS本身,并像其他任何Sophora文档一样对待视频,即使它们实际上存储在外部Kaltura实例中也是如此。 对于用户而言,附加的应用程序在后台管理视频数据并不重要。

编辑记者的新程序仅包含以下步骤。 首先,在向导中(参见图1)创建一个新的Sophora视频文档(如Eclipse所知),方法是单击主菜单中的File→New。 在此向导中,用户可以从Kaltura服务器中选择现有的视频资产,然后将其与Sophora中的新文档链接。 用户单击列出的视频条目之一后,它将与相应的元信息(持续时间,格式,Kaltura条目ID等)一起显示在预览部分中。

将视频平台Kaltura集成到CMS客户端

图1:创建新视频文件的向导。

单击完成按钮后,新的Sophora文档将自动在编辑器中打开(请参见图2)。 一些字段已经填充了从Kaltura服务器获得的数据,而其他字段为空,因此用户可以完成。 Sophora文档和视频资产之间的连接由唯一的标识符Kaltura条目ID保证。 创建后,此ID在Sophora文档中自动设置(并且不能修改)。

将视频平台Kaltura集成到CMS客户端

图2:打开视频文档以在文档编辑器中进行编辑

现在,该视频已准备就绪,可以进一步使用,并且可以通过拖放将其包含在其他Sophora文档中。 在图3中可以看到一个示例,其中在文章的正文中插入了Sophora视频文档。 结果将立即显示在窗口右侧的预览中。

将视频平台Kaltura集成到CMS客户端

结果可以在右侧的预览中看到。

如果所需的视频在Kaltura服务器上尚不可用,则用户可以首先从本地硬盘驱动器上载该视频。 上传时,视频将自动转换为先前配置的配置文件,即所谓的“风味”(例如,标准,移动或高清)。 另外,从视频数据生成缩略图像。 从现有Kaltura来源创建新的Sophora文档时,此缩略图将从Kaltura复制到Sophora。

由于其在网络上的免费可用性,后续视频中显示的示例性视频取自Blender Foundation的“ Big Buck Bunny ”电影。

实施

当考虑将现有的Kaltura插件用于Drupal,Joomla或WordPress等系统时,您将认识到客户端的集成基于Kaltura提供的Adobe Flash小部件。 在Java / RCP应用程序(例如Sophora DeskClient)中,建议您选择其他方法,因为Flash窗口小部件的使用对用户不友好。 因此,选择取决于直接使用Kaltura平台的Web服务,可以通过Java客户端库进行访问。

连接到Kaltura服务器的功能已封装在一个独特的Eclipse插件中,该插件提供了用于创建新的Sophora视频文档的向导以及新视频的上传对话框。 两者都通过扩展点集成到DeskClient中。

文件建立精灵

在向导的左侧(参见图1),显示了所有视频的列表,这些视频在Kaltura服务器上可用。 对于此列表的说明,使用了JFace TableViewer ,它直接从Kaltura平台检索要显示的内容。 为了通过调用相应的服务KalturaMediaService来获取可用视频,必须首先建立连接。 因此,需要通常的连接详细信息,包括用户名,密码和服务URL。 用户必须在“首选项”页面中预先提供此信息。

与Kaltura服务器的实际连接由KalturaConnection类实现,该类封装了Java客户端库的KalturaClient对象。 然后,基本上,将使用KalturaClient对象访问视频平台的Web服务。

必须调用KalturaConnection对象的getAllVideos()方法才能从服务器检索可用的视频。 如清单1所示, KalturaMediaService用于返回KalturaMediaType.Video类型的条目列表。 这些条目将传递到TableViewer ,并最终显示在向导的列表中。

清单1

private final KalturaClient client;

KalturaConnection(KalturaClient client) {
  this.client = client;
}

public List<KalturaMediaEntry> getAllVideos() throws KalturaException {
  try {
    /* get media service from KalturaClient */
    KalturaMediaService mediaService = client.getMediaService();
        
    /* create a filter and a pager to choose how many entries and which type to receive */
    KalturaMediaEntryFilter filter = new KalturaMediaEntryFilter();
    filter.mediaTypeEqual = KalturaMediaType.VIDEO;
    KalturaFilterPager pager = new KalturaFilterPager();
    pager.pageSize = MAX_PAGESIZE;

    /* execute list action of the mediaService object to get the list of entries */
    KalturaMediaListResponse listResponse = mediaService.list(filter, pager);
    mediaService.list(filter);
    return listResponse.objects;
  } catch (KalturaApiException e) {
    throw new KalturaException(e);
  }
}

“>当您从向导中的可用视频列表中选择一个条目时,相应的视频将立即在位于该列表右侧的预览视频播放器中开始播放。 该播放器是集成到DeskClient中的Kaltura小部件(Kaltura Dynamic Player)之一。 由于播放器是Flash小部件,因此在此应用了SWT浏览器组件。 浏览器组件接收要显示的本地HTML文件,该文件将Flash播放器用作SWFObject

播放器的控制由HTML中JavaScript方法完成,然后可以从DeskClient的Java方法中调用它。 HTML文件和所需JavaScript库也包含在DeskClient插件中。

清单2描述了播放器通过调用 swfobject.embedSWF()将HTML文件的(缩短的)内容嵌入到ID为 kdp3DIV 元素中 如该代码段所示,Flash对象位于Kaltura服务器上,并且可以通过HTTP URL访问。 该URL包含几个参数,例如wid uiconf_id 它们控制播放器的配置。

例如,您可以使用参数 uiconf_id 更改播放器的外观和提供的控件 可以调用 JavaScript函数 changeMedia() 来播放具有匹配的Kaltura条目ID的视频。 在此JavaScript函数中, sendNotification() 方法用于发送 changeMedia 事件。 除了事件的类型之外,还将传递要显示的视频的ID。

 

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript" src="swfobject.js"></script>
    <script type="text/javascript">
      function changeMedia(id) {
        $('#kdp3').get(0).sendNotification('changeMedia', {entryId:id});
      }
    </script>
    <script type="text/javascript">
      [...]             
  swfobject.embedSWF("http://medianac.nacamar.de/index.php/kwidget/wid/_123/uiconf_id/1234567", "kdp3", ...);
    </script>
  </head>
  <body>
    <div id="kdp3" />
  </body>
</html>

为了最终将播放器集成到向导中,使用了PlayerWidget类(请参见清单3)。 在那里,实例化了SWT浏览器组件,方法setUrl()从清单2中接收HTML文件。为了检测所述HTML文件的路径,使用了Eclipse类FileLocator ,并且在URL前面加上了关键字platform :(平台:需要关键字-如果冒号多余,则保留关键字),以便在DeskClient的工作空间中搜索此特定HTML文件。 为了确保通过该机制可靠地检测通过脚本元素嵌入HTML代码中HTML文件以及所需JavaScript库,不得将插件以JAR存档的形式添加到产品中。 而是必须将其添加为解压缩的文件夹。

通过实例化类PlayerWidget的对象,最初会生成一个空的视频播放器。 在调用changeMedia()方法之前,此视频播放器不会播放任何视频。 此方法通过SWT Browser对象的execute()方法将请求转发到相同的命名JavaScript函数,并传递要播放的视频的Kaltura条目ID。 向导的可用视频列表中的每个单独选择都会通知PlayerWidget类的changeMedia()方法,从而触发相应视频的播放。

通常,将Flash对象集成到Eclipse RCP应用程序中时,必须注意SWT浏览器组件会调用系统浏览器(Windows中的Internet Explorer)。 因此,要显示Flash内容,需要用于系统浏览器的相应Flash插件。

清单3 – PlayerWidget

/* Widget which displays a Flash based video player within a Browser component. */
public class PlayerWidget {
        
  private Browser browser;

  public PlayerWidget(Composite parent) {
    browser = new Browser(parent, SWT.NONE);
    String urlString = StringUtils.EMPTY;
    try {
      URL url = new URL("platform:/plugin/com.subshell.sophora.eclipse.kaltura/etc/player_embed.html");
      urlString = FileLocator.toFileURL(url).toURI().toString();
    } catch(IOException e) {
      // Exception Handling ...
}
    browser.setUrl(urlString);
  }
        
  /* Play media with passed id. An invalid ID will lead to a javascript error. */
  public void changeMedia(String entryId) {
    browser.execute("changeMedia('" + entryId  + "');");
  }
}

上载对话框

除了用于创建新的Sophora视频文档的向导之外,还有另一个对话框可将视频文件上传到Kaltura服务器。 打开此对话框后,可以使用与主菜单中的“新建”向导相同的方式访问该对话框,您可以提供一个名称并选择一个本地文件。 确认对话框后(单击“确定”),在后台建立与Kaltura平台的连接,然后传输文件。 为此,调用KalturaConnection类的addNewMediaEntry()方法,该方法访问KalturaBaseEntryService (与清单4比较)。

首先,将传输新视频的二进制数据,然后将条目添加到Kaltura系统中。 借助addFromUploadedFile()方法,新条目将与之前保存的视频数据连接。 根据视频的大小,上载新视频文件和创建新条目可能是一项耗时的操作。 除了传输二进制数据外,上传还会自动触发其他过程,这些过程会将上传的视频转换为不同的格式。 为避免同时阻止UI,此操作在DeskClient的后台运行。 此后台任务完成后,上载的视频将在“新建”向导的所有视频列表中可用。

清单4 – KalturaConnection(继续)

 

public void addNewMediaEntry(File videoFile, String entryName) throws KalturaException {
  try {
    /* get base entry service from KalturaClient */
    KalturaBaseEntryService baseEntryService = client.getBaseEntryService();
                        
    /* upload new file and get a token that identifies it */
    String token = baseEntryService.upload(videoFile);

    /* create a new entry */
    KalturaBaseEntry entry = new KalturaBaseEntry();
    entry.name = entryName;
    entry.type = KalturaEntryType.MEDIA_CLIP;

/* attach uploaded file to newly created entry */
    baseEntryService.addFromUploadedFile(entry, token);
  } catch (KalturaApiException e) {
    throw new KalturaException(e);
  }
}

在网站上显示视频

由于Sophora中的内容播放是通过JSP模板实现的,因此需要相应的模板。 该模板具有与DeskClient向导中用于预览播放器HTML文件类似的机制。 SWFObject嵌入视频播放器,并接收Kaltura条目ID作为参数。 模板从必须播放的Sophora文档中接收此ID。 视频的大小,高度和首选配置的其他参数允许更改视频播放器的外观。

结论:通过两个系统的连接来增加价值

Sophora和Kaltura这两个系统的交互在各个方面都提供了明显的好处。 如前所述,该连接有助于用户轻松地将视频集成到网站中,而无需离开二手CMS熟悉的环境。 在后台,该系统受益于视频平台的宝贵功能,例如流媒体,视频播放器小部件或自动格式转换。

该解决方案为将来的扩展提供了许多选择。 可能的变体可能是CMS中的在线视频平台设计或通过网站将视频作为用户生成的内容上传。

从技术角度来看,Kaltura平台与Sophora CMS的连接一直在进行,没有任何严重障碍。 Java库提供了对平台功能的轻松访问。


翻译自: https://jaxenter.com/integrating-the-video-platform-kaltura-to-a-cms-client-104620.html

上一篇: Python类与对象

下一篇: