• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Hadoop 的視頻轉(zhuǎn)儲(chǔ)研究

      2016-01-09 13:50:32李凱段良濤董林林
      電腦知識(shí)與技術(shù) 2015年30期
      關(guān)鍵詞:存儲(chǔ)轉(zhuǎn)碼視頻

      李凱+段良濤+董林林

      摘要:隨著科學(xué)技術(shù)的發(fā)展,用戶對(duì)視頻訪問(wèn)的需求也與日俱增,有效存儲(chǔ)和管理海量的視頻文件,為用戶提供更好的體驗(yàn),越來(lái)越引起人們的關(guān)注。Hadoop則提供了一種新的思路,通過(guò)Hadoop的HDFS和ffmpeg的結(jié)合,視頻的轉(zhuǎn)碼和存儲(chǔ)得到了更好的效果。

      關(guān)鍵詞:Hadoop ;視頻; 轉(zhuǎn)碼;存儲(chǔ)

      中圖分類號(hào):TP37 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)30-0157-03

      Research for Transcoding and Storage of Videos Based on Hadoop

      LI Kai 1, DUAN Liang-tao2 , DONG Lin-lin2

      (College of Computer Engineering, Qingdao Technological University, Qingdao 266033, China)

      Abstract: With the development of science and technology ,the demands of the users for video access are more and more .It is more and more attact peoples attention that the effective storage and management of video files and providing users with better experience.Hadoop provides a new train of thought. Through the combination of Hadoop HDFS function and ffmpeg,the transcoding and storage of the videos obtain the better effect.

      Key words: Hadoop; videos; transcoding; storage

      隨著移動(dòng)互聯(lián)網(wǎng)的迅猛發(fā)展,與之相應(yīng)的視頻app也越來(lái)越多,網(wǎng)絡(luò)帶寬狀況也都不相同,終端的播放設(shè)備和軟件的千差萬(wàn)別便成了困擾視頻應(yīng)用的難題;隨著電信網(wǎng),互聯(lián)網(wǎng)和廣播電視網(wǎng)的三網(wǎng)融合的發(fā)展,更要求視頻在三個(gè)平臺(tái)上都能播放,因此視頻編碼格式需要進(jìn)行轉(zhuǎn)換。由于用戶和網(wǎng)絡(luò)環(huán)境都比較復(fù)雜,特別是像視頻點(diǎn)播這樣的應(yīng)用,對(duì)海量視頻進(jìn)行轉(zhuǎn)碼的需要更大,否則不能滿足多樣化終端環(huán)境和不同網(wǎng)絡(luò)的需求。視頻轉(zhuǎn)碼業(yè)務(wù)面臨越來(lái)越嚴(yán)峻的問(wèn)題:海量化的視頻數(shù)據(jù),多平臺(tái)的視頻應(yīng)用,多樣性的視頻編碼標(biāo)準(zhǔn)。[1]

      針對(duì)上述問(wèn)題,首先必須有效地存儲(chǔ)和管理視頻數(shù)據(jù),才能為用戶提供良好的下載、播放等服務(wù),Hadoop和ffmpeg為我們提供了新的思路。

      1 相關(guān)知識(shí)

      Hadoop是一種可以對(duì)海量數(shù)據(jù)進(jìn)行分布式處理的軟件框架。Hadoop對(duì)數(shù)據(jù)的處理有可靠、高效、可伸縮的特點(diǎn)。HDFS是Hadoop的分布式文件系統(tǒng),是Hadoop的重要組成部分。在使用的時(shí)候,HDFS既能夠作為存儲(chǔ)組件來(lái)配合Hadoop其他組件實(shí)現(xiàn)云功能;也可以單獨(dú)的用來(lái)構(gòu)建集群;通過(guò)Hadoop的HDFS,用戶便能夠開(kāi)發(fā)分布式程序,而不用了解分布式文件系統(tǒng)的底層細(xì)節(jié),充分利用集群的特點(diǎn)進(jìn)行存儲(chǔ)和高速運(yùn)輸。MapReduce是一個(gè)編程模型,也是一個(gè)處理和生成超大規(guī)模數(shù)據(jù)集的算法模型的實(shí)現(xiàn)[2]。map和reduce函數(shù)是其底層過(guò)程。Map函數(shù)負(fù)責(zé)讀取文件分片中的數(shù)據(jù)記錄,把所有的數(shù)據(jù)記錄都轉(zhuǎn)換成鍵值對(duì),并把文件分片的統(tǒng)計(jì)數(shù)據(jù)記錄下來(lái)。Map函數(shù)生成的中間結(jié)果作為Reduce函數(shù)的輸入,它會(huì)根據(jù)鍵以合并方式來(lái)縮小鍵/值對(duì)列表。

      FFmpeg擁有領(lǐng)先的音/視頻編碼庫(kù)—libavcodec,是用來(lái)轉(zhuǎn)換、記錄數(shù)字音頻、視頻,并可以將其轉(zhuǎn)化成流的開(kāi)源視頻工具軟件。Ffmpeg雖然是在Linux下開(kāi)發(fā)出來(lái)的,但它能夠在大部分操作系統(tǒng)中編譯,其中就包括Windows系統(tǒng),能夠完成多種視頻格式的相互轉(zhuǎn)換,F(xiàn)FMPEG支持FLV,AC3,DV,DivX,MPEG,MPEG4等40多種編碼,Matroska,ASF,OGG,AVI,MPEG,等90多種解碼[3]。

      2 總體架構(gòu)

      利用Hadoop平臺(tái)及FFMPEG工具實(shí)現(xiàn)視頻數(shù)據(jù)轉(zhuǎn)儲(chǔ)的架構(gòu)描述如圖1所示[4]:

      視頻轉(zhuǎn)儲(chǔ)的流程如下:

      1) 本地服務(wù)器獲取源視頻文件,將源視頻文件分割成Chuck_1,Chuck_2,Chuck_3,Chuck_4等視頻片段;

      2) 將視頻片段上傳到HDFS;

      3) 在Hadoop集群用map對(duì)視頻片段進(jìn)行轉(zhuǎn)碼生成新的視頻片段Chuckm_1,Chuckm_2,Chuckm_3,Chuckm_4等;

      4) 利用reduce對(duì)Chuckm_1, Chuckm_2,Chuckm_3,Chuckm_4等視頻片段進(jìn)行合并。

      3 模塊實(shí)現(xiàn)

      根據(jù)視頻轉(zhuǎn)儲(chǔ)處理流程,系統(tǒng)可以分為視頻分割、視頻轉(zhuǎn)碼、視頻合并、視頻上傳、視頻下載五個(gè)模塊。

      3.1視頻分割

      ffmpeg分割視頻的指令示例如下:

      ffmpeg -ss 00:00:00 -i f.avi -vcodec copy -acodec copy -t 00:06:00 output.avi

      首先,調(diào)用Convervideo類,然后調(diào)用getTime()方法獲取視頻的總時(shí)長(zhǎng),再根據(jù)要分割的分片數(shù),獲取每一分片的時(shí)長(zhǎng),最后調(diào)用ffmpeg分割視頻指令對(duì)視頻進(jìn)行分割,并將分割后的視頻路徑寫(xiě)入txt中。

      視頻分割流程如圖2所示,分割后的效果圖如圖3所示,

      一般來(lái)說(shuō),視頻分片存儲(chǔ)在HDFS上,而視頻轉(zhuǎn)碼是在本地文件系統(tǒng)進(jìn)行的,所以首先需要將視頻分片文件下載到本地。之后map( )函數(shù)接收鍵值對(duì),再將視頻分片根據(jù)解析出的視頻分片在HDFS上的存儲(chǔ)位置,從HDFS下載到本地,在本地完成轉(zhuǎn)碼工作。<視頻文件名,轉(zhuǎn)碼后視頻分片位置>是map()函數(shù)輸出的鍵值對(duì)。鍵值對(duì)傳送到reduce( )函數(shù)的過(guò)程比較繁雜,包括鍵值對(duì)的緩存,排序,分區(qū),序列化等過(guò)程,如圖5所示。map( )函數(shù)輸出結(jié)果時(shí),不是直接寫(xiě)入磁盤(pán)中。而是使用了緩沖區(qū),一邊緩存map結(jié)果,一邊對(duì)結(jié)果進(jìn)行一些預(yù)排序。一個(gè)map任務(wù)對(duì)應(yīng)一個(gè)存放map輸出的鍵值對(duì)的環(huán)形緩沖區(qū)。這個(gè)緩沖區(qū)的大小默認(rèn)為100M,緩沖區(qū)的存放容量達(dá)到一定閾值時(shí),一個(gè)后臺(tái)線程便會(huì)把緩沖區(qū)的內(nèi)容寫(xiě)入到磁盤(pán)中。后臺(tái)線程從緩沖區(qū)取數(shù)據(jù)的同時(shí),map仍然會(huì)向環(huán)形緩沖區(qū)中寫(xiě)鍵值對(duì)。當(dāng)后臺(tái)線程取鍵值對(duì)因?yàn)樗俣缺容^慢而導(dǎo)致填滿環(huán)形緩沖區(qū)時(shí),map函數(shù)就會(huì)阻塞。當(dāng)緩沖區(qū)達(dá)到閾值時(shí),后臺(tái)線程便會(huì)創(chuàng)建一個(gè)來(lái)存放緩沖區(qū)鍵值對(duì)的spill文件。所以,一個(gè)map任務(wù)完成時(shí),也就產(chǎn)生了多個(gè)spill文件。map( )函數(shù)輸出的中間鍵值對(duì)的大小應(yīng)該盡可能地減小,這樣才能降低系統(tǒng)開(kāi)銷。因此,本系統(tǒng)中的作為中間鍵值對(duì)的,不是把轉(zhuǎn)碼后的視頻分片,而是其存儲(chǔ)位置[53.3視頻合并

      視頻合并的ffmpeg指令示例:

      ffmpeg -f concat -i /home/hadoop/videotest/codelist.txt -c copy outtest.flv

      視頻的合并處理工作是由Reducer的reduce( )函數(shù)完成的。視頻合并過(guò)程如圖6所示:

      首先,map()函數(shù)將轉(zhuǎn)碼視頻分片信息傳遞給reduce()函數(shù),reduce( )函數(shù)根據(jù)接收的信息,將轉(zhuǎn)碼視頻分片從目標(biāo)節(jié)點(diǎn)下載到本地,最后調(diào)用視頻處理類的合并方法將視頻合并,把視頻合并結(jié)果上傳至HDFS。reduce函數(shù)不輸出鍵值對(duì)。

      3.4視頻上傳

      如何實(shí)現(xiàn)通過(guò)云存儲(chǔ)平臺(tái)把文件上傳至HDFS集群,關(guān)鍵是后臺(tái)代碼的編寫(xiě)。這里調(diào)用HDFS的API,使用的是HDFS中DistributedFileSystem的copyFromLocalFile 方法,將本地文件根據(jù)給出的文件路徑上傳到HDFS,最終實(shí)現(xiàn)文件從用戶本地上傳到HDFS集群。

      上傳文件調(diào)用的org.apache.hadoop.hdfs.DistributedFileSystem類是繼承的抽象類 org.apache.hadoop.fs.FileSystem??蛻舳巳绻胍M(jìn)行相關(guān)文件操作,訪問(wèn)HDFS集群,必須通過(guò)該類來(lái)實(shí)現(xiàn)。客戶端與集群中NameNode通過(guò)DistributedFileSystem類建立連接,然后與NameNode進(jìn)行通信和相關(guān)交互,調(diào)用DistributedFileSystem類的相關(guān)方法來(lái)完成元數(shù)據(jù)的相關(guān)操作。具體流程圖7所示。

      3.5視頻下載

      客戶端通過(guò)DistributedFileSystem類與NameNode建立連接,完成元數(shù)據(jù)的相關(guān)操作后,再調(diào)用DistributedFileSystem中的open方法,隨后打開(kāi)HDFS輸入流FSDataInputStream,將HDFS文件輸入流轉(zhuǎn)向本地文件輸出流,利用copyToLocalFile方法便實(shí)現(xiàn)了文件從HDFS集群到本地的下載過(guò)程。具體流程如圖8所示:

      4 結(jié)論

      隨著互聯(lián)網(wǎng)的迅猛發(fā)展,云存儲(chǔ)、云計(jì)算成為了國(guó)內(nèi)外研究的熱點(diǎn)。在海量數(shù)據(jù)存儲(chǔ)方面,云存儲(chǔ)的優(yōu)越性使之成為業(yè)界關(guān)注的焦點(diǎn)。開(kāi)源分布式系統(tǒng)框架Hadoop擁有強(qiáng)大的數(shù)據(jù)存儲(chǔ)能力和計(jì)算能力,在云存儲(chǔ)的解決方案和系統(tǒng)架構(gòu)上,基于Hadoop文件系統(tǒng)的應(yīng)用越來(lái)越廣泛[6]。本文中,這種通過(guò)Hadoop和ffmpeg的結(jié)合的方法,能夠很好地提升視頻轉(zhuǎn)儲(chǔ)的效率,為用戶提供良好的用戶體驗(yàn)。

      參考文獻(xiàn):

      [1] 方陽(yáng).海量視頻實(shí)時(shí)云轉(zhuǎn)碼系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D]. 大連:大連理工大學(xué),2013.

      [2] 李曉波.基于Hadoop的海量視頻數(shù)據(jù)存儲(chǔ)及轉(zhuǎn)碼系統(tǒng)的研究與設(shè)計(jì)[D].杭州:浙江工業(yè)大學(xué),2013.

      [3] 趙淑漫. FFMPEG轉(zhuǎn)碼技術(shù)在HTML5視頻系統(tǒng)中的研究與應(yīng)用[D].上海:東華大學(xué),2013.

      [4] 熊曉蕓,段良濤,王金龍.云平臺(tái)上AVS視頻轉(zhuǎn)碼系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電視技術(shù),2016(6).

      [5] 郭奕希.基于Hadoop的視頻轉(zhuǎn)碼系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2011.

      [6] 張興.基于Hadoop的云存儲(chǔ)平臺(tái)的研究與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2013.

      猜你喜歡
      存儲(chǔ)轉(zhuǎn)碼視頻
      翻譯與文學(xué)的跨文化轉(zhuǎn)碼/旅行:評(píng)王光林《離散文學(xué)中的翻譯》
      視頻轉(zhuǎn)碼技術(shù)在廣播電視中的應(yīng)用研究
      締客世界(2020年1期)2020-12-12 18:18:28
      基于IPTV點(diǎn)播業(yè)務(wù)的視頻分段式轉(zhuǎn)碼方案的研究與應(yīng)用
      傳播力研究(2018年7期)2018-05-10 09:42:47
      檔案管理中電子文件的存儲(chǔ)探究
      條形碼技術(shù)在涂裝生產(chǎn)中的應(yīng)用
      網(wǎng)絡(luò)視頻廣告的傳播策略探討
      基于IPv6組播技術(shù)校園網(wǎng)絡(luò)視頻服務(wù)設(shè)計(jì)
      怎樣提高中小學(xué)日常教學(xué)視頻資源拍攝的整體質(zhì)量
      遠(yuǎn)程視頻監(jiān)控圖像自動(dòng)標(biāo)注優(yōu)化方法
      云計(jì)算與虛擬化
      濮阳市| 永德县| 武乡县| 拜泉县| 大兴区| 梅河口市| 宁南县| 来凤县| 连平县| 章丘市| 大新县| 桦甸市| 东兴市| 邹城市| 东山县| 太仓市| 四平市| 遂川县| 榆林市| 徐汇区| 祁东县| 江门市| 徐闻县| 略阳县| 宝兴县| 洛隆县| 汉寿县| 吴川市| 巴林右旗| 北流市| 靖边县| 九江县| 吉林市| 光山县| 桂东县| 仲巴县| 文安县| 遵义市| 商河县| 合山市| 泉州市|