亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于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分布式框架,通過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;分布式

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

        筆者提出基于Hadoop的分布式視頻轉(zhuǎn)碼系統(tǒng),是在Hadoop的架構(gòu)基礎(chǔ)上,通過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é)的情況下,開發(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ù)帶來毀滅性的災(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è)開源免費(fèi)跨平臺(tái)的視頻和音頻流方案,屬于自由軟件,采用LGPL或GPL許可證(依據(jù)選擇的組件)可以自由獲取所有FFmpeg的源代碼[6]。FFmpeg是將音視頻的錄制、格式轉(zhuǎn)換以及流化綜合為一身的解決方案,可以將音視頻

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

        基于FFmpeg的視頻轉(zhuǎn)碼開發(fā)主要用到如下4個(gè)常用庫(kù)文件:libavcodec、libavformat、libavutil和libswscale。其中,libavcodec是目前領(lǐng)先的的音頻/視頻編解碼庫(kù),用于存放編/解碼各種類型音/視頻的模塊;libavformat具有讀取音視頻幀、獲取解碼所需信息以生成解碼上下文結(jié)構(gòu)等功能,主要用于存放各種音/視頻封裝格式的復(fù)用/解復(fù)用模塊;libavutil包含一些公共的工具函數(shù),用于存放內(nèi)存操作等模塊;libswscale主要用來處理色彩映射的轉(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階段,通過調(diào)用第三方視頻轉(zhuǎn)碼庫(kù)FFmpeg將多個(gè)視頻小文件轉(zhuǎn)換為對(duì)應(yīng)格式的視頻小文件;

        貴州蘋果主產(chǎn)區(qū)喬化砧蘋果主要采用小冠疏層形和自由紡錘形。小冠疏層形是在疏散分層形的基礎(chǔ)上改進(jìn)而成的適宜中密度栽植的中冠樹形,全樹有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)過壓縮的,根據(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)行分割,視頻分割可以借助于開源視頻工具mkvmerge實(shí)現(xiàn),將分割后的視頻塊上傳到Hadoop的HFDS分布式文件系統(tǒng)。

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

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

        轉(zhuǎn)碼程序通過調(diào)用FFmpeg庫(kù)進(jìn)行實(shí)現(xiàn),由于Hadoop是Java語(yǔ)言程序,而FFmpeg庫(kù)是C/C++編寫,所以可使用JNI技術(shù)來實(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)首先是通過調(diào)用av_read_frame()讀取碼流中的音頻若干幀或者視頻一幀;其次,通過調(diào)用avcodec_decode_video2()解碼一幀視頻數(shù)據(jù)(例如,輸入一個(gè)壓縮編碼的結(jié)構(gòu)體AVPacket,輸出一個(gè)解碼后的結(jié)構(gòu)體AVFrame),編碼的實(shí)現(xiàn)是通過調(diào)用avcodec_encode_video2(),將編碼后的結(jié)構(gòu)體AVFrame,編碼為一個(gè)AVPacket;最后,寫入文件。

        2.4 視頻合并

        通過Hadoop的MapReduce應(yīng)用,在Reduce函數(shù)中調(diào)用視頻合并程序。在Reduce函數(shù)里通過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)行初始化,打開輸入視頻文件,創(chuàng)建輸出文件,根據(jù)輸入來創(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。

        筆者通過將相同的視頻在單機(jī)通過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ù)中通過JNI對(duì)FFmpeg庫(kù)的調(diào)用,實(shí)現(xiàn)分布式的視頻轉(zhuǎn)碼。通過實(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]郝樹魁.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開源項(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ǔ)
        無線電工程(2013年1期)2013-09-19 10:18:18
        日本av一区二区在线| 日本人妖熟女另类二区| 黑人巨大精品欧美| 久久精品人人做人人综合| 中文字幕在线日韩| 亚洲欧美日韩高清一区二区三区 | 日本大片免费观看完整视频 | 久久亚洲精品无码gv| 亚欧视频无码在线观看| 国产激情一区二区三区成人| 久久无码字幕中文久久无码| 亚洲av中文无码乱人伦在线r▽| 国产亚洲欧洲AⅤ综合一区| 色综合久久人妻精品日韩| 久久亚洲中文字幕精品一区| 国产呦系列呦交| 99久久综合国产精品免费 | 亚洲无码毛片免费视频在线观看 | 阴唇两边有点白是怎么回事| 国产精品vⅰdeoxxxx国产| 国产激情对白一区二区三区四| 绿帽人妻被插出白浆免费观看| 久久精品亚洲熟女av麻豆| 久久99国产精一区二区三区| 99国产超薄丝袜足j在线观看| 中文字幕久久熟女人妻av免费| 国产精品亚洲av无人区一区香蕉| 俄罗斯老熟妇色xxxx| 国产午夜视频免费观看| 亚洲丝袜美腿精品视频| 男人边做边吃奶头视频| 三上悠亚免费一区二区在线| 国产目拍亚洲精品二区| 国产精品国产三级国产aⅴ下载| 亚洲精品无播放器在线播放| 91福利精品老师国产自产在线| 国产三级精品三级在线专区| 午夜毛片不卡免费观看视频| 人妻少妇不满足中文字幕| 日韩人妻一区二区中文字幕| 国产果冻豆传媒麻婆精东|