• 
    

    
    

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

      基于Hadoop的分布式視頻轉(zhuǎn)碼系統(tǒng)的研究與設(shè)計(jì)

      2016-12-02 05:49:57胡銳胡伏原陳麗春
      關(guān)鍵詞:轉(zhuǎn)碼視頻文件調(diào)用

      胡銳,胡伏原,陳麗春

      (1.蘇州科技大學(xué)網(wǎng)絡(luò)與教育技術(shù)中心,江蘇蘇州215009;2.蘇州科技大學(xué)電子與信息工程學(xué)院,江蘇蘇州215009;3.中國(guó)電信股份有限公司吳江分公司,江蘇蘇州215200)

      基于Hadoop的分布式視頻轉(zhuǎn)碼系統(tǒng)的研究與設(shè)計(jì)

      胡銳1,胡伏原2,陳麗春3

      (1.蘇州科技大學(xué)網(wǎng)絡(luò)與教育技術(shù)中心,江蘇蘇州215009;2.蘇州科技大學(xué)電子與信息工程學(xué)院,江蘇蘇州215009;3.中國(guó)電信股份有限公司吳江分公司,江蘇蘇州215200)

      視頻轉(zhuǎn)碼是視頻錄制到播放不可或缺的一個(gè)重要環(huán)節(jié)之一,然而單機(jī)版視頻轉(zhuǎn)碼耗時(shí)長(zhǎng),特別是大視頻轉(zhuǎn)碼。該文采用一種基于Hadoop的分布式視頻轉(zhuǎn)碼系統(tǒng),使用Hadoop的MapReduce分布式框架,通過(guò)JNI對(duì)FFmpeg庫(kù)的調(diào)用,實(shí)現(xiàn)分布式的視頻轉(zhuǎn)碼。實(shí)驗(yàn)結(jié)果,相比單機(jī)版視頻轉(zhuǎn)碼,分布式視頻轉(zhuǎn)碼有明顯的優(yōu)勢(shì)。

      Hadoop;視頻轉(zhuǎn)碼;FFmpeg;分布式

      近年來(lái),隨著視頻應(yīng)用的增加,人們?cè)絹?lái)越趨向觀看視頻娛樂(lè),比如國(guó)內(nèi)土豆、優(yōu)酷等,國(guó)外YouTube;通過(guò)觀看視頻進(jìn)行學(xué)習(xí),比如網(wǎng)易公開(kāi)課、Mooc等。視頻需求量越來(lái)越多。由于視頻播放的需求具有多樣性,因此,需要進(jìn)行轉(zhuǎn)碼的需求量也越來(lái)越多。由于單機(jī)版視頻轉(zhuǎn)碼耗時(shí)較長(zhǎng),服務(wù)器資源占用高,如何降低視頻轉(zhuǎn)碼所需時(shí)間,提高轉(zhuǎn)碼效率,是視頻轉(zhuǎn)碼發(fā)展必須解決的問(wèn)題。

      筆者提出基于Hadoop的分布式視頻轉(zhuǎn)碼系統(tǒng),是在Hadoop的架構(gòu)基礎(chǔ)上,通過(guò)MapReduce編程框架,將轉(zhuǎn)碼任務(wù)分布到節(jié)點(diǎn)上,在Map函數(shù)里調(diào)用FFmpeg庫(kù)實(shí)現(xiàn)轉(zhuǎn)碼,進(jìn)而實(shí)現(xiàn)了分布式的視頻轉(zhuǎn)碼。

      1 相關(guān)技術(shù)

      1.1 Hadoop

      Hadoop是一個(gè)分布式系統(tǒng)基礎(chǔ)架構(gòu),它可以分布式地操縱大量數(shù)據(jù)。用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開(kāi)發(fā)分布式程序,充分利用集群的高速運(yùn)算和存儲(chǔ)能力[1]。Hadoop主要包括兩個(gè)部分:HDFS(Hadoop Distributed File System)和MapReduce。最底層是HDFS,它存儲(chǔ)Hadoop集群中所有存儲(chǔ)節(jié)點(diǎn)上的文件,HDFS的上一層是MapReduce引擎,該引擎由JobTracker和TaskTrackers組成[2]。HDFS是一個(gè)分布式文件存儲(chǔ)系統(tǒng),包括NameNode和DataNode,NameNode提供元數(shù)據(jù)服務(wù),負(fù)責(zé)管理,DataNode為HDFS提供存儲(chǔ)塊。為了避免機(jī)器故障給數(shù)據(jù)帶來(lái)毀滅性的災(zāi)難,HDFS將文件分塊,且每個(gè)數(shù)據(jù)塊以多個(gè)數(shù)據(jù)副本的形式存儲(chǔ)在多個(gè)數(shù)據(jù)節(jié)點(diǎn)上[3]。MapReduce是Google提出的分布式并行計(jì)算編程模型,用于大規(guī)模數(shù)據(jù)的并行處理[4]。MapReduce在功能上實(shí)現(xiàn)將一個(gè)任務(wù)分割成多個(gè)Key/Value對(duì)形式的子任務(wù),并把子任務(wù)Map到多個(gè)節(jié)點(diǎn)上進(jìn)行并行處理,之后以單個(gè)數(shù)據(jù)集的形式加載(Reduce)返回任務(wù)結(jié)果。Map階段對(duì)數(shù)據(jù)進(jìn)行并行處理,Reduce階段對(duì)Map階段的結(jié)果進(jìn)行合并,得到最終結(jié)果[5]。

      1.2 FFmpeg

      FFmpeg是一款強(qiáng)大的音視頻編碼器與解碼器的集合,支持多種文件格式。FFmpeg是一個(gè)開(kāi)源免費(fèi)跨平臺(tái)的視頻和音頻流方案,屬于自由軟件,采用LGPL或GPL許可證(依據(jù)選擇的組件)可以自由獲取所有FFmpeg的源代碼[6]。FFmpeg是將音視頻的錄制、格式轉(zhuǎn)換以及流化綜合為一身的解決方案,可以將音視頻

      文件轉(zhuǎn)化為流,然后進(jìn)行處理[7]。

      基于FFmpeg的視頻轉(zhuǎn)碼開(kāi)發(fā)主要用到如下4個(gè)常用庫(kù)文件:libavcodec、libavformat、libavutil和libswscale。其中,libavcodec是目前領(lǐng)先的的音頻/視頻編解碼庫(kù),用于存放編/解碼各種類型音/視頻的模塊;libavformat具有讀取音視頻幀、獲取解碼所需信息以生成解碼上下文結(jié)構(gòu)等功能,主要用于存放各種音/視頻封裝格式的復(fù)用/解復(fù)用模塊;libavutil包含一些公共的工具函數(shù),用于存放內(nèi)存操作等模塊;libswscale主要用來(lái)處理色彩映射的轉(zhuǎn)換以及視頻場(chǎng)景的比例縮放[8]。

      2 系統(tǒng)與實(shí)現(xiàn)

      2.1 系統(tǒng)架構(gòu)

      文中所設(shè)計(jì)的基于Hadoop的分布式視頻轉(zhuǎn)碼系統(tǒng),可以實(shí)現(xiàn)多種視頻格式的轉(zhuǎn)換。分布式視頻轉(zhuǎn)碼系統(tǒng),分為三個(gè)部分:視頻分割、視頻轉(zhuǎn)碼和視頻合并。整個(gè)系統(tǒng)架構(gòu)如圖1所示。

      圖1 系統(tǒng)整體架構(gòu)

      (1)視頻分割是實(shí)現(xiàn)一個(gè)待轉(zhuǎn)碼視頻文件分割成多個(gè)視頻小文件,并將分割后的小文件寫入HDFS;

      (2)視頻轉(zhuǎn)碼是在Hadoop的MapReduce的Map階段,通過(guò)調(diào)用第三方視頻轉(zhuǎn)碼庫(kù)FFmpeg將多個(gè)視頻小文件轉(zhuǎn)換為對(duì)應(yīng)格式的視頻小文件;

      貴州蘋果主產(chǎn)區(qū)喬化砧蘋果主要采用小冠疏層形和自由紡錘形。小冠疏層形是在疏散分層形的基礎(chǔ)上改進(jìn)而成的適宜中密度栽植的中冠樹(shù)形,全樹(shù)有2層主枝,小冠疏層形的整形修剪要點(diǎn)可以參照疏散分層形。自由紡錘形有直立而長(zhǎng)勢(shì)強(qiáng)健的中央領(lǐng)導(dǎo)干,在主干上均勻分布的主枝8~12個(gè),長(zhǎng)勢(shì)均衡,呈螺旋式上升排列。

      (3)視頻合并是在Hadoop的MapReduce的Reduce階段,將已經(jīng)轉(zhuǎn)碼完成后的多個(gè)視頻小文件合并成一個(gè)視頻文件,并將合并的視頻文件寫入到HDFS,給用戶提供相關(guān)的視頻文件地址。

      2.2 視頻分割

      一般視頻文件都是經(jīng)過(guò)壓縮的,根據(jù)H.264的不同類別,視頻編碼器會(huì)使用類型不同的幀。視頻幀可以為分:IF、PF和BF。IF為關(guān)鍵幀是GOP的第一個(gè)幀,保留了一個(gè)場(chǎng)景的所有信息;PF是單項(xiàng)預(yù)測(cè)幀,只保留了與前一幀的差值;BF是雙向預(yù)測(cè)幀,存儲(chǔ)前后幀的畫面信息。因此,視頻不能隨意分割,必須根據(jù)IF進(jìn)行分割,才保證不丟幀及GOP畫面的完整,如圖2所示。

      圖2 視頻分割

      根據(jù)IF關(guān)鍵幀進(jìn)行分割,視頻分割可以借助于開(kāi)源視頻工具mkvmerge實(shí)現(xiàn),將分割后的視頻塊上傳到Hadoop的HFDS分布式文件系統(tǒng)。

      2.3 分布式視頻轉(zhuǎn)碼

      通過(guò)Hadoop的MapReduce應(yīng)用,在Mapper函數(shù)中調(diào)用視頻轉(zhuǎn)碼程序,在Reduce函數(shù)中進(jìn)行轉(zhuǎn)碼后視頻的合并工作,如圖3所示。

      轉(zhuǎn)碼程序通過(guò)調(diào)用FFmpeg庫(kù)進(jìn)行實(shí)現(xiàn),由于Hadoop是Java語(yǔ)言程序,而FFmpeg庫(kù)是C/C++編寫,所以可使用JNI技術(shù)來(lái)實(shí)現(xiàn)Java調(diào)用FFmpeg庫(kù)進(jìn)行實(shí)視頻轉(zhuǎn)碼工作,如圖4所示。

      圖3 分布式視頻轉(zhuǎn)碼流程

      圖4 JNI調(diào)用接口

      編譯FFmpeg庫(kù)會(huì)生成相應(yīng)的JNI.h文件com_transcoding_jni_JNI.h,在對(duì)應(yīng)的C文件(com_transcoding_ jni_JNI.c)里,手動(dòng)添加調(diào)用FFmpeg庫(kù)里的函數(shù),格式為:JNICALLJava_com_transcoding_jni_JNI_XXXXX,工作流程如圖5所示。調(diào)用FFmpeg庫(kù)的核心函數(shù)如下:

      av_read_frame()//函數(shù)功能讀取碼流中的視頻一幀或音頻若干幀;

      avcodec_decode_video2()//函數(shù)功能解碼一幀視頻數(shù)據(jù);

      avcodec_encode_video2()//函數(shù)功能重新編碼一幀視頻數(shù)據(jù),實(shí)現(xiàn)轉(zhuǎn)碼功能。

      視頻轉(zhuǎn)碼的步驟是先解碼,后編碼。解碼的實(shí)現(xiàn)首先是通過(guò)調(diào)用av_read_frame()讀取碼流中的音頻若干幀或者視頻一幀;其次,通過(guò)調(diào)用avcodec_decode_video2()解碼一幀視頻數(shù)據(jù)(例如,輸入一個(gè)壓縮編碼的結(jié)構(gòu)體AVPacket,輸出一個(gè)解碼后的結(jié)構(gòu)體AVFrame),編碼的實(shí)現(xiàn)是通過(guò)調(diào)用avcodec_encode_video2(),將編碼后的結(jié)構(gòu)體AVFrame,編碼為一個(gè)AVPacket;最后,寫入文件。

      2.4 視頻合并

      通過(guò)Hadoop的MapReduce應(yīng)用,在Reduce函數(shù)中調(diào)用視頻合并程序。在Reduce函數(shù)里通過(guò)JNI調(diào)用FFmpeg庫(kù)里的函數(shù),工作流程如圖6所示,調(diào)用FFmpeg庫(kù)的核心函數(shù)如下:

      圖5 轉(zhuǎn)碼流程圖

      圖6 視頻合并流程圖

      av_read_frame()//函數(shù)功能讀取碼流中的視頻一幀或音頻若干幀;

      avcodec_copy_context()//拷貝待合視頻碼流的AVCodecContext到合并的輸出的AVCodecContext;

      av_interleaved_write_frame()//合并后AVPacket到輸出文件。

      進(jìn)行初始化,打開(kāi)輸入視頻文件,創(chuàng)建輸出文件,根據(jù)輸入來(lái)創(chuàng)建輸入流,調(diào)用Copy函數(shù)拷貝輸入流到輸出流,判斷是否完成一段視頻,設(shè)置pts和dts,寫入到輸出文件,完成一段視頻,進(jìn)入下一段輸入視頻。

      3 分布式視頻轉(zhuǎn)碼的性能

      文中在一臺(tái)32核CPU,128內(nèi)存的Dell PowerEdge R920服務(wù)器上創(chuàng)建了8個(gè)虛擬機(jī)進(jìn)行性能測(cè)試,Hadoop集群部署,如表1所示。

      表1 集群環(huán)境

      系統(tǒng)運(yùn)行環(huán)境為Hadoop版本:hadoop-2.2.0;FFmpeg版本:1.0;Java版本:jdk1.7.0_40。

      筆者通過(guò)將相同的視頻在單機(jī)通過(guò)FFmpeg命令行進(jìn)行轉(zhuǎn)碼與分布式視頻轉(zhuǎn)碼進(jìn)行對(duì)比實(shí)驗(yàn),數(shù)據(jù)如圖7所示。從圖7可以看出與單機(jī)版相比,隨著轉(zhuǎn)碼視頻增大,分布式轉(zhuǎn)碼效率高,相對(duì)單機(jī)版節(jié)省了一半以上的時(shí)間。

      圖7 轉(zhuǎn)碼耗時(shí)對(duì)比

      4 結(jié)語(yǔ)

      基于Hadoop的分布式視頻轉(zhuǎn)碼系統(tǒng),使用Hadoop的MapReduce編程接口,實(shí)現(xiàn)了分布式框架結(jié)構(gòu),在Map函數(shù)中通過(guò)JNI對(duì)FFmpeg庫(kù)的調(diào)用,實(shí)現(xiàn)分布式的視頻轉(zhuǎn)碼。通過(guò)實(shí)驗(yàn)數(shù)據(jù),可以看出與單機(jī)版視頻轉(zhuǎn)碼相比,分布式視頻轉(zhuǎn)碼有明顯的優(yōu)勢(shì)。

      [1]胡銳,胡伏原,陳麗春.基于Hadoop的高校公共數(shù)據(jù)平臺(tái)的構(gòu)建[J].蘇州科技學(xué)院學(xué)報(bào)(自然科學(xué)版),2015,32(3):52-55.

      [2]郝樹(shù)魁.Hadoop HDFS和MapReduce架構(gòu)淺析[J].郵電設(shè)計(jì)技術(shù),2012(7):37-42.

      [3]羅鵬,龔勛.HDFS數(shù)據(jù)存放策略的研究與改進(jìn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2014,35(4):1127-1131.

      [4]李成華,張新訪,金海,等.MapReduce:新型的分布式并行計(jì)算編程模型[J].計(jì)算機(jī)工程與科學(xué),2011,33(3):129-135.

      [5]黃潔琛,倪明.基于Hadoop的分布式視頻轉(zhuǎn)碼方案[J].計(jì)算機(jī)工程,2015,41(8):218-222.

      [6]覃艷.基于FFMPEG的視頻格式轉(zhuǎn)換技術(shù)研究[J].電腦知識(shí)與技術(shù),2011,7(12):2912-2913.

      [7]劉紅,盧程.FFmpeg開(kāi)源項(xiàng)目移植到Android的研究[J].價(jià)值工程,2016,35(4):166-169.

      [8]何圓圓,何凱.基于FFmpeg的H.264視頻解碼器的研究與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2012,8(35):8519-8521.

      Research and design of distributed video transcoding system based on Hadoop

      HU Rui1,HU Fuyuan2,CHEN Lichun3
      (1.Network and Educational Technology Center,SUST,Suzhou 215009,China;2.School of Electronic&Information Engineering,SUST,Suzhou 215009,China;3.Wujiang Branch of China Telecom Co.,Ltd,Suzhou 215200,China)

      Video transcoding plays a vital role in the process of video recording and video play.The single version of the video transcoding is time-consuming.Therefore,this paper proposes a distributed video transcoding system based on Hadoop,which employs MapReduce distributed framework and JNI.The experiments show that the distributed video transcoding system has obvious advantages over the single video transcoding.

      Hadoop;video transcoding;FFmpeg;distribution

      TP393

      A

      1672-0687(2016)04-0057-05

      責(zé)任編輯:艾淑艷

      2016-08-06

      國(guó)家自然科學(xué)基金資助項(xiàng)目(61472267)

      胡銳(1986-),男,安徽六安人,助理工程師,碩士,研究方向:大數(shù)據(jù)與物聯(lián)網(wǎng)。

      猜你喜歡
      轉(zhuǎn)碼視頻文件調(diào)用
      移動(dòng)云盤在線轉(zhuǎn)碼功能技術(shù)研究
      流媒體視頻文件相似性識(shí)別的方法
      隨心定制視頻文件的縮略圖
      視頻轉(zhuǎn)碼技術(shù)在廣播電視中的應(yīng)用研究
      締客世界(2020年1期)2020-12-12 18:18:28
      核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      基于IPTV點(diǎn)播業(yè)務(wù)的視頻分段式轉(zhuǎn)碼方案的研究與應(yīng)用
      傳播力研究(2018年7期)2018-05-10 09:42:47
      基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
      基于Hadoop 的分布式視頻轉(zhuǎn)碼方案
      視頻網(wǎng)格中自適應(yīng)熱度變化的條塊化存儲(chǔ)
      汉阴县| 监利县| 海南省| 海兴县| 正镶白旗| 枣庄市| 昌乐县| 十堰市| 云梦县| 田林县| 鲁甸县| 海原县| 洪湖市| 东乌珠穆沁旗| 四川省| 凯里市| 江永县| 岳西县| 阜宁县| 乌拉特前旗| 洪泽县| 中阳县| 寻甸| 武宣县| 慈利县| 延寿县| 威宁| 南乐县| 集安市| 拉萨市| 安福县| 大同市| 美姑县| 濮阳市| 斗六市| 大邑县| 东乌珠穆沁旗| 公安县| 仙桃市| 玛沁县| 东港市|