李菁菁, 蔡鴻明, 步豐林
(上海交通大學(xué) 軟件學(xué)院, 上海 200240)
面向圖書電子化的視頻協(xié)同編輯和管理平臺
李菁菁, 蔡鴻明, 步豐林
(上海交通大學(xué) 軟件學(xué)院, 上海 200240)
針對圖書電子化過程的協(xié)同編輯問題,提出了一種視頻協(xié)同編輯和管理平臺框架.采用基于雙向鏈表帶權(quán)重的有向圖形式進行視頻版本管理模型的設(shè)計,并使用完整版本和增量版本混合的方式對視頻資源進行管理,版本的存取則采用非對稱多模型的形式,通過實現(xiàn)視頻的版本控制模塊來實現(xiàn)視頻編輯的異步協(xié)同.軟件的初步應(yīng)用驗證可知,提出的版本控制模塊在支持視頻的異步協(xié)同編輯方面具有較大適用性.
版本控制; 協(xié)同; 視頻編輯
出版社為了適應(yīng)新一輪互聯(lián)網(wǎng)+的發(fā)展,已經(jīng)由傳統(tǒng)的單一紙質(zhì)出版形式向紙質(zhì)文本與電子化資源聯(lián)合出版的形式轉(zhuǎn)變,其中電子化資源主要指書籍內(nèi)容所對應(yīng)的視頻.書籍文本和其電子化資源的編輯都需要作者協(xié)作完成,但是作者的工作時間比較彈性,多個作者往往不能滿足同一時間全部在線工作的要求.因此,如何為作者提供一種異步協(xié)同的工作模式來保證作者可以隨時隨地進行編輯工作成為目前急需解決的問題.
現(xiàn)已有GitBook等工具支持多人對書籍文本進行異步協(xié)同編輯工作,但對于視頻而言,目前還沒有成熟的應(yīng)用以支持多人異步協(xié)同編輯.隨著HTML5標準化的發(fā)展,開發(fā)獨立的平臺應(yīng)用在不同操作系統(tǒng)和不同分辨率的智能手機、平板電腦、手提電腦和臺式機中運行成為可能,基于HTML5視頻播放器進行視頻編輯的相關(guān)研究已有很多成果.Video-Wiki[1]是一款基于Web的視頻編輯系統(tǒng),根據(jù)文本對視頻內(nèi)容進行協(xié)同標記,通過用戶對文本內(nèi)容的理解對視頻內(nèi)容進行剪切、編輯以及重組,生成定制視頻.文獻[2]開發(fā)了一款基于HTML5的交互式非線性視頻編輯播放器,但提出的視頻協(xié)同編輯只限于不同用戶對視頻添加文字或者圖片注釋等操作,并沒有開放對原有視頻內(nèi)容進行編輯的權(quán)限,對視頻的最終修改只能由視頻擁有者來做.維基百科[3]在2011年提出視頻協(xié)同編輯的概念,通過討論現(xiàn)有HTML5技術(shù)如何為富媒體應(yīng)用提供更好的支持,進行了基于瀏覽器的視頻協(xié)同程序的展望工作.VidWiki[4]是一個基于瀏覽器的在線視頻修正系統(tǒng),可用來提高教育視頻中手寫文字的可讀性.用戶可以為教育視頻某一時刻的內(nèi)容添加標注,用印刷字覆蓋視頻中的手寫字,提高了視頻中文字的可讀性,為視頻中的內(nèi)容添加公式、圖片或者其他內(nèi)容使教學(xué)視頻中的內(nèi)容更便于理解,同時通過本地化視頻中的語言方便本地學(xué)習者學(xué)習視頻中的內(nèi)容.VidWiki通過獲得鎖的方式實現(xiàn)視頻協(xié)同編輯,在某一段時間內(nèi)只有一人擁有某個視頻的編輯權(quán),只有獲得鎖的人將鎖釋放后,其他人才有可能獲得相應(yīng)的鎖,進行視頻編輯操作.NOVET[5]是一種基于Web的視頻編輯開源工具,它允許用戶通過瀏覽器編輯視頻并將其結(jié)果發(fā)布,具有視頻剪切、合并、上傳、下載、添加音頻等功能.WeVideo[6]是一個視頻協(xié)同編輯平臺,可以運行在Web端和移動端,提供視頻剪輯,添加特效、字幕和音樂等功能.用戶通過邀請其他用戶進入自己創(chuàng)建的工程,實現(xiàn)在線多人同步編輯功能.簡而言之,現(xiàn)有的在線視頻編輯應(yīng)用,大多數(shù)不支持多人協(xié)同編輯,少數(shù)只支持視頻的同步協(xié)同編輯或者只支持單人進行視頻編輯的異步協(xié)同.
因此,本文提出一種視頻協(xié)同編輯和管理平臺框架,支持同步協(xié)同和異步協(xié)同兩種協(xié)同方式.其中,異步協(xié)同主要基于版本控制來實現(xiàn),提出基于雙向鏈表的非對稱版本管理模型,并在此基礎(chǔ)上實現(xiàn)版本控制算法來達到多人異步協(xié)同進行視頻編輯的目的.
以同步協(xié)同方式進行視頻編輯時,用戶的操作會實時地上傳至服務(wù)器,服務(wù)器端對所有操作進行沖突檢測,若沖突無法得到解決,系統(tǒng)會駁回相關(guān)的沖突操作,其余的操作則會根據(jù)文獻[7]中的方法構(gòu)建操作樹,根據(jù)操作樹得到視頻的渲染結(jié)果并返回給所有用戶.系統(tǒng)的版本控制模塊會保留用戶每次進行協(xié)同工作的最終版本,并對其進行管理.
異步協(xié)同視頻編輯功能的實現(xiàn)依賴于版本控制模塊.每個用戶可以創(chuàng)建私有分支,在私有分支上進行視頻編輯工作和版本的提交,同時不會影響其他用戶的編輯結(jié)果.在所有用戶完成工作后,進行分支的融合并得到最終的結(jié)果.但用戶間的操作往往會發(fā)生沖突,沖突的檢測主要依賴于視頻操作集,沖突解決方案主要采用產(chǎn)生多版本的沖突容忍策略.
本文提出的視頻協(xié)同編輯和管理平臺框架(如圖1所示)主要分為客戶端和服務(wù)器端兩部分.
圖1 視頻協(xié)同編輯和管理平臺框架Fig.1 Collaborative video editing and management platform framework
客戶端即瀏覽器端,用戶可以在瀏覽器中上傳視頻或者選擇已有的視頻進行編輯,其主要包括視頻編輯器模塊、版本控制模塊、協(xié)同編輯方式模塊和協(xié)同管理模塊.
(1) 視頻編輯器模塊包括視頻播放以及各種視頻編輯操作模塊,主要為視頻編輯提供相應(yīng)功能.
(2) 版本控制模塊可以查看視頻版本關(guān)系演進圖,并進行版本的提取和回溯等.
(3) 協(xié)同編輯方式模塊進行協(xié)同方式的選擇,提供同步協(xié)同和異步協(xié)同兩種方式.
(4) 協(xié)同管理模塊主要對用戶權(quán)限和視頻資源進行管理.
服務(wù)器端包括服務(wù)層和數(shù)據(jù)層兩部分.服務(wù)層包括版本控制模塊和協(xié)同編輯模塊.數(shù)據(jù)層主要是對系統(tǒng)資源進行管理,包括視頻操作集、視頻資源、版本關(guān)系圖和用戶權(quán)限.其中服務(wù)層主要模塊的功能如下:
(1) 版本控制模塊的版本管理是核心,并在其基礎(chǔ)上實現(xiàn)版本控制算法.
(2) 協(xié)同編輯模塊主要是對抽象操作集、共享資源和用戶間的會話進行管理,以此來進行沖突檢測,實現(xiàn)沖突避免,或?qū)σ旬a(chǎn)生的沖突根據(jù)不同的處理策略進行沖突處理.
2.1非對稱多模型的版本管理
本文通過實現(xiàn)視頻的版本控制模塊來實現(xiàn)異步協(xié)同,保證所有用戶能隨時進行資源的編輯與管理.如今流行的版本控制系統(tǒng)包括CVS、 Subversion、 Git和Mercurial[8].由于視頻無法進行結(jié)構(gòu)化分割且占用大量存儲空間,以往基于文本和基于場景圖的3D資源版本控制方法不適用于視頻資源,本文提出非對稱多模型的版本管理方法,根據(jù)版本間轉(zhuǎn)化權(quán)重決定版本的管理模型類型,以非對稱的形式維護視頻版本,并在此基礎(chǔ)上實現(xiàn)版本控制算法,達到異步協(xié)同的目的.
2.1.1 視頻多版本管理模型
現(xiàn)有的多版本管理策略分為完整版本管理和增量版本管理[9-10].完整版本管理對管理空間的要求較高,增量版本管理雖然降低了管理空間的要求,但對特定版本的提取需要進行相關(guān)計算,從而影響版本的提取效率.因此,提出一種基于雙向鏈表的帶權(quán)重的有向圖的版本關(guān)系模型,采取混合版本管理的方式來平衡管理空間與版本提取速度.
圖2 基于雙向鏈表的帶權(quán)重的有向圖Fig.2 Weighted directed graph based on doubly linked list
2.1.2 非對稱多模型
編輯視頻前首先要提取視頻的某個版本,之后的編輯操作主要是為了讓用戶快速看到編輯后的效果,對視頻本身質(zhì)量要求不高,所以用戶提取版本時為用戶返回視頻的壓縮版本,這樣可以降低網(wǎng)絡(luò)負載,減少網(wǎng)絡(luò)傳輸時間,提高用戶操作響應(yīng)速度.
定義1 滿足以下條件之一時,則為相關(guān)版本創(chuàng)建壓縮版本并進行維護,其中壓縮版本均為完整版本的壓縮版本.
(1) 版本為當前分支的最新版本;
(2) 用戶提取版本為某個非最新版本.
定義2 滿足以下條件之一時,創(chuàng)建和維護的壓縮版本將被舍棄.
(1) 新版本產(chǎn)生,即壓縮版本所對應(yīng)的版本節(jié)點不再是當前分支的最新版本節(jié)點;
(2) 分支進行合并.
非對稱多模型如圖3所示.由圖3可知:在版本節(jié)點1處進行分支操作,產(chǎn)生兩個分支,每個分支會在最新版本節(jié)點處產(chǎn)生最新版本所對應(yīng)完整版本的壓縮版本,并進行臨時存儲;進行分支合并操作后,每個分支創(chuàng)建和維護的壓縮版本將被舍棄,并創(chuàng)建和維護合并版本所對應(yīng)的壓縮版本.由于分支合并規(guī)定存儲完整版本,可以直接對其產(chǎn)生的合并版本進行壓縮,產(chǎn)生對應(yīng)的壓縮版本.圖3中,在版本5處進行分支的合并操作,版本5為當前最新版本,應(yīng)創(chuàng)建和維護其對應(yīng)的壓縮版本,同時壓縮版本3和壓縮版本4被舍棄;當用戶進行指定版本的提取時,也將臨時維護所提取版本對應(yīng)的壓縮版本.
圖3 非對稱多模型Fig.3 Asymmetric multiple model
2.2版本控制算法
本文提出的版本控制算法主要包括4個方面:提取、分支與標簽、提交與更新、差分與融合.
2.2.1 版本的提取
將用戶上傳的原始視頻作為視頻的初始版本,服務(wù)器端會對初始版本進行壓縮,將壓縮版本返回給用戶進行編輯,其中初始版本永遠采用完整版本策略.
若視頻已經(jīng)存儲在服務(wù)器端,且用戶沒有指定返回的版本,則服務(wù)器端返回給當前用戶所在分支最新版本所對應(yīng)的壓縮版本.如果用戶指定了某個版本,且指定版本不是當前分支所對應(yīng)的最新版本,則分為以下兩種情況進行結(jié)果的返回:(1)如果提取版本為完整版本,則直接創(chuàng)建其壓縮版本并返回給用戶;(2)如果提取版本為增量版本,則通過最近的完整版本進行操作渲染,產(chǎn)生指定版本的完整版本并進行壓縮,將其壓縮版本返回給用戶.
2.2.2 版本的分支與標簽
視頻編輯默認的分支為主分支(Master),在進行分支操作的時候,會判斷當前分支的最后一個節(jié)點的存儲類型.如果是完整存儲版本,則直接進行分支操作;如果是增量存儲版本,則向上追溯到最近的完整版本并進行當前分支最后一個節(jié)點的完整版本渲染,得到最新的完整版本并替換當前的增量版本.新的分支會被用戶賦予一個新的名稱作為唯一標識,用戶可以在任意分支之間進行切換.
用戶可以對任意一個分支中的某個版本進行標簽操作,系統(tǒng)會產(chǎn)生一個對此版本的引用,用戶可以通過標簽快速切換到其對應(yīng)的版本;同時,用戶也可以對已有的標簽進行刪除,解除對某個版本的引用.
視頻版本的分支和標簽如圖4所示.由圖4可知,當前的版本歷史圖中有Master和Branch 1兩個分支,同時為版本1所在的標簽打上Version 1的標簽.
圖4 視頻版本的分支和標簽Fig.4 Branches and tags of video versions
2.2.3 版本的提交與更新
將用戶上傳的原始視頻作為視頻的初始版本,視頻編輯后產(chǎn)生的新版本則根據(jù)2.1.1節(jié)中提出的基于雙向鏈表的帶權(quán)重的有向圖來進行新版本的存儲,存儲新版本流程的偽代碼如圖5所示.
Procedure1:CalculatecostweightWbasedonoperations0Input:OperationSetO={O1,O2,……On}(0istheoperationofthevideo)Lastversionvideo:Vedioi=1Toleranceparameters:tolerancepOutput:ThecostW1ofthenewversionvideo1. CalculatenoperationcostWtempbyLoopingoverOperationSetO2. Versioni-1=getversionType(Vedioi=1)3. if(Versioni=1=='complete')4. returnWtemp5. else{6. Versiontemp=Versioni=17. while(Versiontemp!='complete'){8. Wtemp=Wtemp+getWeight(Versiontemp)9. Versiontemp=getPriorVersion(Versiontemp)10. }11.returnWtemp
Procedure2:CalculatethenewversiontypebasedonweightWInput:ThecostweightW1ofthenewversionfromthelastcompleteversionvideoOperationSetO=O1,O2,……,On(0istheoperationofthevideo)Lastversionvideo:Vedioi-1ThecriticalvalueofthecostweightΔw1.if(W1≥Δw){2. Versiontemp=Versioni-13. index=i=14. while(Versiontemp!='complete'){5. Wtemp=Wtemp+getPriorVersion(Versiontemp)6. Versiontemp=getPriorVersion(Versiontemp)7. index=index-18. }9. Vediores=Vedioindex10. while(index!=i){11. Vediorse=getRenderVideo(Vediores,Oindex+1)12. index=index=113. }14. storeCompleteVideo(Vediores,O)15.}16.else{17. storeoperations(O)18.}
圖5存儲新視頻版本算法
Fig.5Algorithmofstorenewversionvideo
用戶在進行視頻編輯操作時,系統(tǒng)會記錄用戶的每一個操作,在操作結(jié)束時,會產(chǎn)生一系列操作組成的操作集.在進行新版本存儲時,系統(tǒng)會根據(jù)產(chǎn)生的操作集計算從上一個版本到當前要存儲版本之間進行視頻渲染所需要的代價wi,系統(tǒng)本身有一個臨界值Δw,比較wi和Δw大小,來決定當前版本是進行增量存儲還是完整存儲.
2.2.4 版本的差分與融合
任意分支可以進行融合操作,但是融合之前要進行分支之間的差異性計算.首先獲取每個分支從當前最新版本到所有分支公共祖先結(jié)點的所有操作序列,將每個分支的操作序列合并形成一個新的操作集On,通過文獻[7]中的方法為其構(gòu)建操作樹,在構(gòu)建操作樹的過程中,如果不同分支之間的操作存在沖突,則采用文獻[11]中的沖突容忍策略,系統(tǒng)會先試圖將不同分支的結(jié)果進行融合,如果融合失敗則保留所有的組合情況供用戶選擇.由于分支的起始位置均采用完整存儲策略,所以分支的公共祖先根據(jù)構(gòu)建的操作樹來進行視頻的處理產(chǎn)生分支的融合結(jié)果,并將融合的結(jié)果進行完整版本的存儲,舍棄每個分支之前各自維護的最新版本對應(yīng)的壓縮版本,并產(chǎn)生融合版本所對應(yīng)的視頻壓縮版本.
2.2.5 異步協(xié)同視頻編輯
異步協(xié)同視頻編輯功能通過版本控制模塊來實現(xiàn).多個用戶可以各自創(chuàng)建私有分支,并在自己的私有分支上進行相關(guān)的視頻編輯工作和版本的提交.在所有用戶完成各自的編輯工作后,對所有分支進行融合操作,得到最終結(jié)果.融合過程中沖突的檢測主要依賴于視頻操作集,沖突解決方案主要采用產(chǎn)生多版本的沖突容忍策略.
3.1原型系統(tǒng)實現(xiàn)架構(gòu)
原型系統(tǒng)的實現(xiàn)架構(gòu)如圖6所示.應(yīng)用層以瀏覽器為客戶端,主要基于HTML5進行前端頁面的開發(fā),實現(xiàn)基于Video.js的視頻編輯播放器,包括視頻協(xié)同編輯方式選擇和協(xié)同管理等模塊.服務(wù)層使用Node.js進行后臺開發(fā),采用ffmpeg實現(xiàn)服務(wù)器端視頻的處理,主要包括版本控制、協(xié)同編輯、視頻存儲、視頻處理和用戶權(quán)限管理模塊.數(shù)據(jù)存儲層使用非結(jié)構(gòu)化數(shù)據(jù)庫MongoDB進行數(shù)據(jù)存儲,主要存儲視頻操作集、視頻資源、版本關(guān)系圖和用戶權(quán)限等資源.其中,應(yīng)用層和服務(wù)層通過WebSocket技術(shù)實現(xiàn)雙向?qū)崟r通信功能,使用Ajax進行應(yīng)用層和服務(wù)層之間的服務(wù)調(diào)用.
圖6 系統(tǒng)實現(xiàn)架構(gòu)圖Fig.6 System implementation architecture
3.2原型系統(tǒng)界面
Web端的實現(xiàn)界面如圖7所示.
圖7 系統(tǒng)實現(xiàn)圖Fig.7 Main interface of system
分支管理界面如圖8所示.
圖8 分支管理界面Fig.8 Interface of branch management
合并分支之后的結(jié)果界面如圖9所示.
圖9 分支合并結(jié)果Fig.9 Interface of branch merge result
3.3分析與討論
本文實現(xiàn)的原型系統(tǒng)WVES(web-based video editing system),不僅提供了較為豐富的視頻編輯功能,還同時支持同步協(xié)同和異步協(xié)同兩種協(xié)同編輯方式,并且提供視頻的版本控制模塊來對多人異步協(xié)同編輯提供保障.基于Web的視頻編輯系統(tǒng)的比較如表1所示.
由表1可知,現(xiàn)有的視頻系統(tǒng)對協(xié)同編輯的支持并不完善,也沒有提供視頻資源的管理方案.VidWiki不支持同步協(xié)同,通過獲取鎖的方式進行單人異步協(xié)同,在某一段時間內(nèi)只對一個人開放視頻資源的編輯權(quán)利,并不能體現(xiàn)協(xié)同編輯的特性.WeVideo只支持視頻的同步協(xié)同編輯,不支持異步協(xié)同.本文實現(xiàn)的WVES系統(tǒng)在提供了較為完整的視頻編輯功能的基礎(chǔ)上,同時支持同步協(xié)同和異步協(xié)同兩種視頻協(xié)同編輯方式.在對視頻資源的管理方面,VidWiki和WeVideo每次均對新的視頻版本進行完整版本的存儲,而本文實現(xiàn)的WVES系統(tǒng)包括視頻的版本控制模塊,該模塊不僅為實現(xiàn)多人異步協(xié)同提供了保障,還可更好地對視頻資源進行管理.
表1 基于Web的視頻編輯系統(tǒng)對比
本文提出了基于Web的視頻協(xié)同編輯和管理平臺框架.針對視頻資源的版本控制,從多版本管理模型和版本控制算法兩方面展開研究,采用基于雙向鏈表的帶權(quán)重的有向圖形式進行版本管理模型的設(shè)計,并使用完整版本和增量版本混合的技術(shù)對視頻資源進行管理,版本的存取則采用非對稱多模型的形式,所提出的版本控制算法支持版本的提取、分支與標記、提交與更新、差分與融合.視頻的多人異步協(xié)同編輯的實現(xiàn)基于提出的視頻版本控制模塊.
由于本文對視頻處理操作主要在服務(wù)端進行,對網(wǎng)路的傳輸速度有很高的要求;在異步協(xié)同編輯模式下,對多分支的融合需要較長的時間進行最終版本的渲染來獲得合并后的結(jié)果.所以下一步的研究工作主要包括如何降低網(wǎng)絡(luò)延遲對獲取視頻渲染結(jié)果的影響,以及如何優(yōu)化現(xiàn)有的多分支合并方案來提高多分支融合的速度.
[1c] BLANKINSHIP E, MIKHAK B. Video-Wikis and media fluency[C]//Proceedings of the 6th International Conference on Interaction Design and Children. ACM, 2007: 175-176.
[2] MEIXNER B, SIEGEL B, SCHULTES P, et al. An HTML5 player for interactive non-linear video with time-based collaborative annotations[C]//Proceedings of International Conference on Advances in Mobile Computing & Multimedia. ACM, 2013: 490-500.
[3] DALE M. Collaborative video editing for Wikipedia[C]//Proceedings of the 7th International Symposium on Wikis and Open Collaboration. ACM, 2011: 225-225.
[4] CROSS A, BAYYAPUNEDI M, RAVINDRAN D, et al. VidWiki: Enabling the crowd to improve the legibility of online educational videos[C]//Proceedings of the 17th ACM Conference on Computer Supported Cooperative Work & Social Computing. ACM, 2014: 1167-1175.
[5] WANG H A, LIN Y C, LU H T, et al. Open source for web-based video editing[J]. Journal of Information Science and Engineering, 2012, 28(4): 787-801.
[6] WeVideo[EB/OL].[2017-02-15]. https://www.wevideo.com/.
[7] 謝曉青,張妍,姜麗紅,等.基于操作樹的移動視頻編輯方法研究及實現(xiàn)[J].東華大學(xué)學(xué)報(自然科學(xué)版),2015,41(4):467-473.
[8] MUSLU K, BIRD C, NAGAPPAN N, et al. Transition from centralized to decentralized version control systems: A case study on reasons, barriers, and outcomes[C]//Proceedings of the 36th International Conference on Software Engineering. ACM, 2014: 334-344.
[9] 劉國軍,楊宏志.基于雙向鏈表的產(chǎn)品協(xié)同設(shè)計版本存儲模型[J].計算機系統(tǒng)應(yīng)用,2013,22(10):129-131.
[10] SONG Y, LUO Y, ZHANG Y, et al. Version storage in collaborative design system based on circular linked list[C]//Computer Supported Cooperative Work in Design (CSCWD), Proceedings of the 2014 IEEE 18th International Conference on. IEEE, 2014: 684-688.
[11] GAO L, YU F, CHEN Q, et al. Consistency maintenance of Do and Undo/Redo operations in real-time collaborative bitmap editing systems[J]. Cluster Computing, 2016, 19(1): 255-267.
(責任編輯:徐惠華)
BookOrientedElectronicPlatformforCollaborativeVideoEditingandManagement
LIJingjing,CAIHongming,BUFenglin
(School of Software, Shanghai Jiao Tong University, Shanghai 200240, China)
Aiming at the problem of collaborative video editing of book oriented electronic process, an architecture of book oriented platform for collaborative video editing and management is proposed. In this architecture, the video version management model is based on doubly linked list of weighted directed graph, using the full version and incremental version mix mode to manage the video resources, and the access of the specified version video adopts asymmetric multiple model form. Through the implementation of video version control module, the goal on asynchronous collaborative video editing can be achieved. The initial application of the system shows that the version control module has great applicability in the field of asynchronous collaborative video editing.
version control; collaboration; video editing
TP 391
A
1671-0444 (2017)04-0459-07
2017-04-28
國家自然科學(xué)基金資助項目(61373030,71171132)
李菁菁(1994—),女,河南濮陽人,碩士研究生,研究方向為信息可視化. E-mail:jingjing.li@sjtu.edu.cn
蔡鴻明(聯(lián)系人),男,教授,E-mail:hmcai@sjtu.edu.cn