国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

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

李凱+段良濤+董林林

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

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

中圖分類號:TP37 文獻標(biāo)識碼:A 文章編號: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

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

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

1 相關(guān)知識

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

FFmpeg擁有領(lǐng)先的音/視頻編碼庫—libavcodec,是用來轉(zhuǎn)換、記錄數(shù)字音頻、視頻,并可以將其轉(zhuǎn)化成流的開源視頻工具軟件。Ffmpeg雖然是在Linux下開發(fā)出來的,但它能夠在大部分操作系統(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平臺及FFMPEG工具實現(xiàn)視頻數(shù)據(jù)轉(zhuǎn)儲的架構(gòu)描述如圖1所示[4]:

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

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

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

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

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

3 模塊實現(xiàn)

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

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()方法獲取視頻的總時長,再根據(jù)要分割的分片數(shù),獲取每一分片的時長,最后調(diào)用ffmpeg分割視頻指令對視頻進行分割,并將分割后的視頻路徑寫入txt中。

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

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

視頻合并的ffmpeg指令示例:

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

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

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

3.4視頻上傳

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

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

3.5視頻下載

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

4 結(jié)論

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

參考文獻:

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

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

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

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

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

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

猜你喜歡
存儲轉(zhuǎn)碼視頻
翻譯與文學(xué)的跨文化轉(zhuǎn)碼/旅行:評王光林《離散文學(xué)中的翻譯》
視頻轉(zhuǎn)碼技術(shù)在廣播電視中的應(yīng)用研究
締客世界(2020年1期)2020-12-12 18:18:28
基于IPTV點播業(yè)務(wù)的視頻分段式轉(zhuǎn)碼方案的研究與應(yīng)用
傳播力研究(2018年7期)2018-05-10 09:42:47
檔案管理中電子文件的存儲探究
條形碼技術(shù)在涂裝生產(chǎn)中的應(yīng)用
網(wǎng)絡(luò)視頻廣告的傳播策略探討
基于IPv6組播技術(shù)校園網(wǎng)絡(luò)視頻服務(wù)設(shè)計
怎樣提高中小學(xué)日常教學(xué)視頻資源拍攝的整體質(zhì)量
遠(yuǎn)程視頻監(jiān)控圖像自動標(biāo)注優(yōu)化方法
云計算與虛擬化
泸州市| 荥阳市| 竹北市| 曲周县| 巴彦淖尔市| 耿马| 满城县| 泊头市| 武山县| 府谷县| 哈密市| 安图县| 洪洞县| 唐海县| 宁都县| 新河县| 辽中县| 兰坪| 锡林浩特市| 札达县| 上杭县| 祁阳县| 清涧县| 湄潭县| 修文县| 且末县| 深州市| 曲水县| 红原县| 米易县| 蓬莱市| 孟津县| 玉屏| 镇康县| 中阳县| 洪江市| 壶关县| 静宁县| 都昌县| 共和县| 西吉县|