發(fā)布于:2021-01-29 17:06:52
0
139
0
Web內(nèi)容管理系統(tǒng)中視頻資產(chǎn)的集成和管理對用戶和運營商都提出了挑戰(zhàn)。將現(xiàn)有的視頻管理平臺與所采用的CMS連接起來是實現(xiàn)此目標的有效方法,同時又不會浪費時間,也不會縮短用戶培訓的時間。這家德國公司的Subshell選擇了這條路徑,并將開源視頻平臺Kaltura集成到他們流行的內(nèi)容管理系統(tǒng)Sophora的客戶端應(yīng)用程序中。
有幾種方法可以增強具有視頻相關(guān)功能的Web內(nèi)容管理系統(tǒng)。一種方便且常見的方法是將視頻上傳到領(lǐng)先的視頻門戶之一,然后借助HTML或JavaScript片段將其嵌入到您自己的網(wǎng)站中。即使該變體需要相對最小的技術(shù)努力,但對于用戶來說仍然不是很舒適。此外,對實際視頻數(shù)據(jù)的控制權(quán)交給了第三方服務(wù)提供商,您通常必須向該第三方服務(wù)提供商授予使用和發(fā)布這些源的權(quán)利。集成視頻的另一種選擇可能是為您的CMS實施自己的解決方案。但是,這種解決方案的時間和精力以及維護費用很高,并且大多缺乏互換性。
出于這些原因,subshell的開發(fā)團隊選擇了第三種方法:開源視頻平臺Kaltura與CMS Sophora的集成。為了更好地理解兩個系統(tǒng)的連接,首先將分別介紹它們。之后,突出顯示集成的功能和技術(shù)細節(jié)。
什么是Sophora?
Sophora是基于Apache Jackrabbit(基于JCR規(guī)范(Java的內(nèi)容存儲庫API)的實現(xiàn))構(gòu)建的基于Java的內(nèi)容管理系統(tǒng)。為了播放內(nèi)容,Sophora專注于Apache Tomcat服務(wù)器中的Java服務(wù)器頁面(JSP)。編輯用戶界面是一個稱為“ DeskClient”的Eclipse Rich Client Platform應(yīng)用程序。有關(guān)Sophora在德國領(lǐng)先新聞網(wǎng)站之一tagesschau.de中的使用的文章,已在《德國 日報》雜志的2.11版中發(fā)布,并在jaxenter.com上在線發(fā)布。
什么是Kaltura?
Kaltura平臺是一個開源視頻資產(chǎn)管理系統(tǒng),Universal,Sony,Pepsi和可口可樂等著名客戶已經(jīng)在使用它。有兩種不同的版本。除了免費的社區(qū)版, 您還可以購買包括托管和支持服務(wù)的變體。此時,subshell與合作伙伴公司進行了合作;nacamar GmbH負責Kaltura系統(tǒng)的托管,包括流和轉(zhuǎn)碼。該產(chǎn)品稱為正中酸。
Kaltura的架構(gòu)
視頻平臺的體系結(jié)構(gòu)基本上由四層組成。底層包含充當云中軟件即服務(wù)(SaaS)的Web服務(wù)。除此之外,還有一層用于編程語言(例如C#,Ruby或Java)的客戶端庫。這些庫從Web服務(wù)中抽象出來,從而簡化了相應(yīng)的通信。下一層包括所謂的小部件,這些小部件可用于某些任務(wù),例如播放或上傳視頻。這些由Kaltura提供的小部件通?;贏dobe Flash,因此可以將它們嵌入到自定義應(yīng)用程序中。最后,頂層由第三方應(yīng)用程序的插件組成,例如Drupal,WordPress,MediaWiki和Joomla。最后一層還包含Kaltura管理控制臺,它將幾乎所有小部件聚集在一個Web界面中,從而可以管理整個系統(tǒng)。在此控制臺的幫助下,您可以上傳視頻,管理現(xiàn)有視頻,更改配置,創(chuàng)建視頻集合(稱為“混合”),分析點擊率等等。
想法
在這一點上,您可能想知道連接視頻平臺(在本例中為中值)和CMS Sophora的好處是什么。最大的優(yōu)點之一是,每天使用此CMS的編輯記者無需熟悉其他應(yīng)用程序,而可以在已知環(huán)境中使用新功能。新工具到用戶界面的簡化集成是Sophora的核心要素,對用戶來說特別方便。由于Sophora基于文檔,因此將不同的內(nèi)容類型(如新聞報道,圖像庫,鏈接,音頻或視頻)建模為單個文檔。通過這種方式,用戶可以通過撰寫相應(yīng)的文檔來創(chuàng)建頁面,而不是編輯整個網(wǎng)站。因此內(nèi)置了CMS功能,
與用戶無關(guān)的配置詳細信息(例如所應(yīng)用的視頻編解碼器)可以從某些角色中隱藏。不同角色的管理還可以使編輯工作流中的職責明確分開:多媒體記者處理視頻資產(chǎn)的配置和提供,而他們的同事照常提供常規(guī)內(nèi)容。
中位數(shù)的另一個優(yōu)點是對實際視頻數(shù)據(jù)的控制權(quán)掌握在您手中,因為可以不受限制地訪問視頻平臺內(nèi)的所有資產(chǎn)。您可以確定視頻的生命周期以及可以以某種質(zhì)量使用的格式。由于Kaltura實例在您的管理下,因此您無需向托管公司授予外部使用或發(fā)布權(quán)限,這與使用領(lǐng)先的視頻門戶之一時通常是一樣的。
整合
因此,集成的主要思想是允許用戶留在自己熟悉的工作臺中,即CMS本身,并像其他任何Sophora文檔一樣對待視頻,即使它們實際上存儲在外部Kaltura實例中也是如此。對于用戶而言,附加的應(yīng)用程序在后臺管理視頻數(shù)據(jù)并不重要。
編輯記者的新程序僅包含以下步驟。首先,通過在向?qū)е袆?chuàng)建一個新的Sophora視頻文檔(參見圖1)(如Eclipse所知),方法是單擊主菜單中的File→New。在此向?qū)е校脩艨梢詮腒altura服務(wù)器中選擇現(xiàn)有的視頻資產(chǎn),然后將其與Sophora中的新文檔鏈接。一旦用戶單擊列出的視頻條目之一,它將與相應(yīng)的元信息(持續(xù)時間,格式,Kaltura條目ID等)一起顯示在預(yù)覽部分中。
單擊完成按鈕后,新的Sophora文檔將自動在編輯器中打開(請參見圖2)。有些字段已經(jīng)填充了從Kaltura服務(wù)器獲得的數(shù)據(jù),而其他字段則為空,因此可以由用戶完成。Sophora文檔和視頻資產(chǎn)之間的連接由唯一的標識符Kaltura條目ID保證。創(chuàng)建后,此ID在Sophora文檔中自動設(shè)置(并且不能修改)。
現(xiàn)在,該視頻已準備就緒,可以進一步使用,并且可以通過拖放將其包含在其他Sophora文檔中。在圖3中可以看到一個示例,其中在文章的正文中插入了Sophora視頻文檔。結(jié)果將立即顯示在窗口右側(cè)的預(yù)覽中。
如果所需的視頻在Kaltura服務(wù)器上尚不可用,則用戶可以首先從本地硬盤驅(qū)動器上載該視頻。在上傳時,視頻將自動轉(zhuǎn)換為先前配置的配置文件,即所謂的“風味”(例如,標準,移動或高清)。另外,從視頻數(shù)據(jù)生成縮略圖像。從現(xiàn)有的Kaltura來源創(chuàng)建新的Sophora文檔時,此縮略圖將從Kaltura復制到Sophora。
由于其在網(wǎng)絡(luò)上的免費可用性,后續(xù)視頻中顯示的示例性視頻取自Blender Foundation的“ Big Buck Bunny ”電影。
實施
當考慮將現(xiàn)有的Kaltura插件用于Drupal,Joomla或WordPress等系統(tǒng)時,您將認識到客戶端的集成基于Kaltura提供的Adobe Flash小部件。在Java / RCP應(yīng)用程序(例如Sophora DeskClient)中,建議您選擇其他方法,因為Flash窗口小部件的使用對用戶不友好。因此,選擇取決于直接使用Kaltura平臺的Web服務(wù),可以通過Java客戶端庫進行訪問。
連接到Kaltura服務(wù)器的功能已封裝在一個獨特的Eclipse插件中,該插件提供創(chuàng)建新Sophora視頻文檔的向?qū)б约靶乱曨l的上傳對話框。兩者都通過擴展點集成到DeskClient中。
文檔創(chuàng)建向?qū)?/strong>
在向?qū)У淖髠?cè)(參見圖1),顯示了所有視頻的列表,這些視頻在Kaltura服務(wù)器上可用。對于此列表的說明,使用了JFace TableViewer,它直接從Kaltura平臺檢索要顯示的內(nèi)容。為了通過調(diào)用相應(yīng)的服務(wù)KalturaMediaService來獲取可用的視頻, 在這種情況下,必須首先建立連接。因此,需要通常的連接詳細信息,包括用戶名,密碼和服務(wù)URL。用戶必須在“首選項”頁面中預(yù)先提供此信息 。
與Kaltura服務(wù)器的實際連接由KalturaConnection類實現(xiàn),該類封裝了Java客戶端庫的KalturaClient對象。然后,基本上,將使用KalturaClient對象訪問視頻平臺的Web服務(wù)。
該方法getAllVideos()中的 KalturaConnection對象有被調(diào)用來檢索來自服務(wù)器的可用視頻。如清單1所示, KalturaMediaService用于返回KalturaMediaType.Video類型的條目列表。這些條目將傳遞到TableViewer,并最終顯示在向?qū)У牧斜碇小?/span>
清單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); } }
預(yù)覽視頻播放器
“ 當您從向?qū)е械目捎靡曨l列表中選擇一個條目時,相應(yīng)的視頻將立即在位于該列表右側(cè)的預(yù)覽視頻播放器中開始播放。該播放器是集成到DeskClient中的Kaltura小部件(Kaltura Dynamic Player)之一。由于播放器是Flash小部件,因此此處將應(yīng)用SWT瀏覽器組件。瀏覽器組件接收要顯示的本地HTML文件,該文件將Flash播放器用作 SWFObject。
播放器的控制是通過HTML中的JavaScript方法完成的,然后可以從DeskClient的Java方法中調(diào)用它。HTML文件和所需的JavaScript庫也包含在DeskClient插件中。
清單2描繪了播放器通過調(diào)用swfobject.embedSWF()將HTML文件的(縮短的)內(nèi)容嵌入到ID為kdp3的DIV 元素中 。如該代碼片段所示,F(xiàn)lash對象位于Kaltura服務(wù)器上,并且可以通過HTTP URL訪問。該URL包含幾個參數(shù),例如 wid和uiconf_id, 它們控制播放器的配置。
例如,您可以使用參數(shù) uiconf_id更改播放器的外觀和提供的控件。 可以調(diào)用JavaScript函數(shù)changeMedia() 來播放具有匹配的Kaltura條目ID的視頻。在此JavaScript函數(shù)中, sendNotification() 方法用于發(fā)送 changeMedia 事件。除了事件的類型之外,還將傳遞要顯示的視頻的ID。
清單2 – player_embed.html
<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>
為了最終將播放器集成到向?qū)е校褂昧薖layerWidget類(請參見清單3)。在那里,實例化了SWT瀏覽器組件,方法 setUrl()從清單2中接收HTML文件。為了檢測所述HTML文件的路徑,使用了Eclipse類 FileLocator,并且在URL前面加上了關(guān)鍵字platform :(平臺:需要關(guān)鍵字-如果冒號多余,則保留關(guān)鍵字),以便在DeskClient的工作空間中搜索此特定的HTML文件。確保通過腳本將HTML文件以及所需的JavaScript庫嵌入HTML代碼中元素通過此機制可靠地檢測到,則不得將插件以JAR存檔的形式添加到產(chǎn)品中。而是必須將其添加為解壓縮的文件夾。
通過實例化類PlayerWidget的對象, 最初會生成一個空的視頻播放器。在調(diào)用changeMedia()方法之前,此視頻播放器不會播放任何視頻。此方法通過SWT瀏覽器對象的execute()方法將請求轉(zhuǎn)發(fā)到相同的命名JavaScript函數(shù),并傳遞要播放的視頻的Kaltura條目ID。向?qū)У目捎靡曨l列表中的每個單獨選擇都會通知PlayerWidget類的changeMedia()方法,從而觸發(fā)相應(yīng)視頻的播放。
通常,將Flash對象集成到Eclipse RCP應(yīng)用程序時,必須注意SWT瀏覽器組件會調(diào)用系統(tǒng)瀏覽器(Windows中的Internet Explorer)。因此,為了顯示Flash內(nèi)容,需要用于系統(tǒng)瀏覽器的相應(yīng)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 + "');"); } }
上傳對話框
除了用于創(chuàng)建新的Sophora視頻文檔的向?qū)е?,還有另一個對話框可將視頻文件上傳到Kaltura服務(wù)器。打開此對話框后,可以使用與主菜單中的“新建”向?qū)嗤姆绞皆L問該對話框,您可以提供一個名稱并選擇一個本地文件。確認對話框后(單擊“確定”),在后臺建立與Kaltura平臺的連接,然后傳輸文件。對于這一點,該方法addNewMediaEntry()的的KalturaConnection 類被調(diào)用它訪問KalturaBaseEntryService(比較清單4)。
首先,傳輸新視頻的二進制數(shù)據(jù),然后將條目添加到Kaltura系統(tǒng)中。借助addFromUploadedFile()方法,新條目將與之前保存的視頻數(shù)據(jù)連接起來。根據(jù)視頻的大小,上載新視頻文件和創(chuàng)建新條目可能是一項耗時的操作。除了傳輸二進制數(shù)據(jù)外,上傳還會自動觸發(fā)其他過程,這些過程會將上傳的視頻轉(zhuǎn)換為不同的格式。為避免同時阻止UI,此操作在DeskClient的后臺運行。此后臺任務(wù)完成后,上載的視頻將在“新建”向?qū)У乃幸曨l列表中可用。
清單4 – KalturaConnection(繼續(xù))
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); } }
在網(wǎng)站上顯示視頻
由于Sophora中的內(nèi)容播放是通過JSP模板實現(xiàn)的,因此需要相應(yīng)的模板。該模板具有與DeskClient向?qū)е杏糜陬A(yù)覽播放器的HTML文件類似的機制。SWFObject嵌入視頻播放器,并接收Kaltura條目ID作為參數(shù)。模板從必須播放的Sophora文檔中接收此ID。視頻的大小,高度和首選配置的其他參數(shù)允許更改視頻播放器的外觀。
結(jié)論:通過兩個系統(tǒng)的連接實現(xiàn)增值
Sophora和Kaltura這兩個系統(tǒng)的交互在各個方面都提供了明顯的好處。如前所述,該連接有助于用戶輕松地將視頻集成到網(wǎng)站中,而無需離開二手CMS熟悉的環(huán)境。在后臺,系統(tǒng)受益于視頻平臺的寶貴功能,例如流媒體,視頻播放器小部件或自動格式轉(zhuǎn)換。
該解決方案為將來的擴展提供了許多選擇??赡艿淖凅w可能是CMS中的在線視頻平臺設(shè)計或通過網(wǎng)站將視頻作為用戶生成的內(nèi)容上傳。
從技術(shù)角度來看,Kaltura平臺與Sophora CMS的連接一直在進行,沒有任何嚴重障礙。Java庫提供了對平臺功能的輕松訪問。