• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Spark Streaming的快速視頻轉(zhuǎn)碼方法

    2019-01-07 12:16:34楊賀昆吳唐美馮朝勝
    計(jì)算機(jī)應(yīng)用 2018年12期
    關(guān)鍵詞:轉(zhuǎn)碼視頻文件分片

    付 眸,楊賀昆,吳唐美,何 潤,馮朝勝,2,康 勝

    (1.四川師范大學(xué) 計(jì)算機(jī)科學(xué)學(xué)院,成都 610101; 2.可視化計(jì)算與虛擬現(xiàn)實(shí)四川省重點(diǎn)實(shí)驗(yàn)室(四川師范大學(xué)),成都 610101; 3.四川師大科技園發(fā)展有限公司,成都 610066)(*通信作者電子郵箱fymen@naver.com)

    0 引言

    隨著多媒體服務(wù)的蓬勃發(fā)展,尤其是智能手機(jī)的普及,人們越來越便捷地生成和傳播圖片、語音、視頻等多媒體數(shù)據(jù);其中,視頻是主要的內(nèi)容形式之一。根據(jù)中國互聯(lián)網(wǎng)信息中心(China Internet Network Information Center, CNNIC)于2018年1月發(fā)布的《第41次中國互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》[1],截至2017年12月,中國網(wǎng)民總數(shù)已達(dá)7.72億;其中,有7.53億網(wǎng)民同時(shí)使用手機(jī)。有5.79億網(wǎng)民使用過網(wǎng)絡(luò)視頻類應(yīng)用,占總數(shù)的75%,比2016年增加了3 437萬。

    視頻內(nèi)容的制作、上傳、分享離不開視頻轉(zhuǎn)碼處理;尤其是移動端視頻分享,例如,通過QQ空間上傳分享一段視頻,上傳完成后,需要一段時(shí)間進(jìn)行視頻轉(zhuǎn)碼工作,才能在網(wǎng)頁中觀看,轉(zhuǎn)碼時(shí)間的長短與視頻的參數(shù)相關(guān)。隨著網(wǎng)絡(luò)視頻用戶規(guī)模的不斷增加,傳統(tǒng)的單機(jī)轉(zhuǎn)碼方式開始出現(xiàn)性能瓶頸,各類視頻網(wǎng)站或視頻應(yīng)用開始借助云計(jì)算技術(shù)[2-3],搭建并行轉(zhuǎn)碼平臺以提升視頻轉(zhuǎn)碼效率。

    本文根據(jù)視頻轉(zhuǎn)碼特點(diǎn),采用分布式流處理技術(shù),提出一種基于Spark Streaming的快速視頻轉(zhuǎn)碼方法。本文分析了傳統(tǒng)的單機(jī)轉(zhuǎn)碼方法和基于Hadoop的視頻轉(zhuǎn)碼方法,改進(jìn)了視頻切割的流程;并減少了批處理轉(zhuǎn)碼方式中大量等待時(shí)間。實(shí)驗(yàn)結(jié)果表明,本文提出的轉(zhuǎn)碼方法顯著提升了轉(zhuǎn)碼效率。

    1 相關(guān)工作

    視頻數(shù)據(jù)的編碼方式有很多種,如常見的HEVC(High Efficiency Video Coding)[4]、MPEG2(Moving Picture Experts Group 2)、MPEG4、H.264、VP9、VC1等。其中,聯(lián)合國下屬機(jī)構(gòu)國際電信聯(lián)盟電信標(biāo)準(zhǔn)分局(International Telecommunication Union Telecommunication standardization sector, ITU-T)制定了H.26X系列視頻編碼標(biāo)準(zhǔn)[5],因其高效的壓縮算法、良好的實(shí)時(shí)傳播兼容性,在遠(yuǎn)程會議、網(wǎng)上聊天、在線視頻等領(lǐng)域得到廣泛應(yīng)用。

    不同的視頻編碼方法有不同的使用場景,根據(jù)需要將視頻編碼進(jìn)行轉(zhuǎn)換是不可或缺的工作。傳統(tǒng)視頻轉(zhuǎn)碼方法是使用單機(jī)進(jìn)行轉(zhuǎn)碼工作,但在處理大量視頻資源時(shí)會有三種情況產(chǎn)生:1)多個(gè)視頻文件進(jìn)行轉(zhuǎn)碼時(shí),通常會按序進(jìn)入轉(zhuǎn)碼隊(duì)列;單機(jī)在處理長隊(duì)列視頻轉(zhuǎn)碼工作十分耗時(shí)。2)某個(gè)視頻轉(zhuǎn)碼工作出現(xiàn)問題,后續(xù)工作停止,需要人工值守。3)不具備并發(fā)視頻轉(zhuǎn)碼能力。

    針對上述情況,使用并行處理方法,可以較好解決以上問題。目前廣泛使用Hadoop框架[6]、Mapreduce編程模型[6-8]、分布式文件系統(tǒng)(Hadoop Distributed File System, HDFS)實(shí)現(xiàn)分布式存儲,開源多媒體處理框架執(zhí)行視頻轉(zhuǎn)碼任務(wù)。使用Hadoop分布式視頻轉(zhuǎn)碼方案,一般會有以下幾個(gè)步驟[9]:1)將源視頻切分成視頻分片,并上傳至HDFS。2)運(yùn)行Map()從HDFS下載視頻分片。3)節(jié)點(diǎn)通過多媒體處理框架進(jìn)行轉(zhuǎn)碼,并將轉(zhuǎn)碼后的文件上傳至HDFS。4)運(yùn)行Reduce(),對轉(zhuǎn)碼后的視頻分片進(jìn)行合并。

    根據(jù)不同視頻轉(zhuǎn)碼任務(wù),多媒體處理框架有多種選擇,F(xiàn)Fmpeg[10]支持多種視頻編碼方式的解碼和編碼,并能跨平臺運(yùn)行,成為眾多視頻轉(zhuǎn)碼研究的主要技術(shù)。MEncoder[11]因命令行解碼的方式,被廣泛應(yīng)用在二次開發(fā)的視頻播放器中。Kim等[12]的團(tuán)隊(duì)對分布式視頻轉(zhuǎn)碼技術(shù)進(jìn)一步研究,2012年研發(fā)了SMCCSE(Social Media Cloud Computing Service Environment),該系統(tǒng)將社交網(wǎng)絡(luò)作為切入點(diǎn),以人們在社交網(wǎng)絡(luò)活動中產(chǎn)生的音頻、視頻、圖像等多媒體文件作為轉(zhuǎn)碼對象,使用平臺即服務(wù)(Platform-as-a-Service, PaaS)云平臺[13],構(gòu)建了基于Hadoop的多媒體轉(zhuǎn)碼系統(tǒng),從而拓展了分布式轉(zhuǎn)碼技術(shù)的應(yīng)用范圍。Kim等[14]持續(xù)關(guān)注分布式轉(zhuǎn)碼技術(shù)的研究進(jìn)展,于2015年提出了多媒體轉(zhuǎn)碼服務(wù)的優(yōu)化轉(zhuǎn)碼方案,該方案進(jìn)一步研究HDFS塊大小、塊備份數(shù)量、Java虛擬機(jī)資源占用、輸入/輸出緩存大小等多種因素對轉(zhuǎn)碼效率的影響,通過大量實(shí)驗(yàn),解決了影響效率的關(guān)鍵問題。2017年,Kim等[15]研發(fā)了另一套基于Hadoop的分布式視頻轉(zhuǎn)碼方案HVTS (Hadoop-based Video Transcoding System),該方案的優(yōu)點(diǎn)是整合了視頻上傳、視頻轉(zhuǎn)碼、視頻分布式保存等模塊,提供了靈活的轉(zhuǎn)碼參數(shù)配置。

    國內(nèi)的相關(guān)研究工作中,重點(diǎn)是對分布式視頻轉(zhuǎn)碼技術(shù)進(jìn)行優(yōu)化。早在2009年,龐一等[16]面向單機(jī)多核視頻編碼并行化技術(shù)進(jìn)行了綜述研究,介紹了在多核環(huán)境中視頻并行化處理的技術(shù)特點(diǎn)。分布式視頻轉(zhuǎn)碼的負(fù)載均衡設(shè)計(jì)也是一個(gè)相當(dāng)重要的研究工作;良好的集群的心跳連接不但可以提升系統(tǒng)穩(wěn)定性,結(jié)合調(diào)度算法,還能最大限度提升集群性能[17]。2014年,Song等[18]的團(tuán)隊(duì)研發(fā)了使用FFmpeg和MEncoder進(jìn)行解碼的分布式系統(tǒng),該系統(tǒng)的特點(diǎn)是在Map階段,使用FFmpeg進(jìn)行轉(zhuǎn)碼任務(wù);在Reduce階段,使用MEncoder進(jìn)行視頻的合并工作。2016年,Chen等[19]提出一種基于Hadoop平臺的視頻并行轉(zhuǎn)碼方法,該方法通過Mapreduce編程,并行化執(zhí)行FFmpeg命令,實(shí)現(xiàn)視頻分割、轉(zhuǎn)碼、合成。該方法與單機(jī)視頻轉(zhuǎn)碼的實(shí)驗(yàn)結(jié)果表明,該方法的轉(zhuǎn)碼效率有明顯提升。但該方法本質(zhì)是基于Hadoop的批處理方式,轉(zhuǎn)碼時(shí),需要等待視頻切割任務(wù)完成后,Map節(jié)點(diǎn)才開始執(zhí)行視頻轉(zhuǎn)碼任務(wù),冗余的等待時(shí)間使得轉(zhuǎn)碼效率提升有限。

    2 關(guān)鍵技術(shù)

    2.1 FFmpeg多媒體框架

    FFmpeg是由開源社區(qū)維護(hù)的多媒體處理框架,提供解碼、編碼、轉(zhuǎn)碼、音頻視頻合成、音視頻分解、流媒體、視頻播放等功能。視頻轉(zhuǎn)碼流程如圖1所示。FFmpeg核心組件和功能如表1所示。

    圖1 視頻轉(zhuǎn)碼流程Fig. 1 Flow chart of video transcoding表1 FFmpeg核心庫Tab. 1 FFmpeg core library

    組件功能libavutil核心工具集,提供編程示例、數(shù)學(xué)函數(shù)、數(shù)據(jù)結(jié)構(gòu)等libavcodec基本的音視頻編碼、解碼庫libavformat對音視頻進(jìn)行分解和合并libavdevice可從第三方抓取和輸入媒體流libswscale提供視頻按照一定規(guī)格進(jìn)行縮放轉(zhuǎn)換功能libswresam-ple提供對音頻進(jìn)行重采樣、重編碼等轉(zhuǎn)碼操作

    FFmpeg通過使用命令行的方式提供強(qiáng)大的多媒體操作功能,可以完成視頻的編碼、解碼。文獻(xiàn)[10]研究實(shí)現(xiàn)了對H.264和HEVC的視頻編碼,并能對這兩種編碼的視頻文件進(jìn)行相互轉(zhuǎn)換。

    FFmpeg作為開源的多媒體框架,并不只針對視頻進(jìn)行處理,還擅長處理音頻、圖片、字幕、視頻/圖片采集等。

    2.2 Spark Streaming流處理框架

    Spark是目前流行的分布式框架之一,其核心由一組功能強(qiáng)大的擴(kuò)展庫組成。目前這些庫包括SparkSQL、Spark Streaming、MLlib以及GraphX,其他一些Spark庫和擴(kuò)展也在陸續(xù)開發(fā)中。Spark Streaming是Spark的組件之一,主要功能是實(shí)現(xiàn)流處理。

    3 構(gòu)建視頻轉(zhuǎn)碼模型

    Hadoop分布式系統(tǒng)擅長處理批量作業(yè),分布式作業(yè)的運(yùn)行依賴于前一步驟作業(yè)的處理結(jié)果,需要數(shù)據(jù)全部處理完畢后,再進(jìn)行下一步作業(yè);根據(jù)視頻轉(zhuǎn)碼的特性,建立流處理模型,將視頻分片數(shù)據(jù)視為流處理中的最小單元,通過調(diào)度算法快速分發(fā)視頻分片數(shù)據(jù),節(jié)省Hadoop切片與Mapper之間的等待時(shí)間,從而達(dá)到提高視頻轉(zhuǎn)碼效率的目的。要建立視頻轉(zhuǎn)碼的流處理模型,首先要考慮視頻文件的特性,其次基于Spark Streaming框架,分別建立數(shù)據(jù)源、RDD、視頻合并服務(wù)器。其中,RDD是研究的關(guān)建。

    3.1 Spark Streaming數(shù)據(jù)源設(shè)計(jì)

    Spark Streaming運(yùn)行時(shí),需要持續(xù)不斷地獲得輸入數(shù)據(jù)。一般視頻文件都會有較大體積,視頻文件在集群網(wǎng)絡(luò)中傳輸,會加重網(wǎng)絡(luò)開銷,降低系統(tǒng)效率,因此通過將完整的視頻文件進(jìn)行切片處理,把切分的視頻分片路徑作為文本輸入數(shù)據(jù),減輕了集群網(wǎng)絡(luò)傳輸負(fù)擔(dān)。要設(shè)計(jì)持續(xù)穩(wěn)定的數(shù)據(jù)源,同時(shí)視頻分片粒度的大小保持一致,需要穩(wěn)定性良好的硬件環(huán)境和程序設(shè)計(jì)。

    完整的源視頻文件需要切分為眾多小視頻文件,并滿足:

    (1)

    視頻文件V的總時(shí)長tsum應(yīng)與各分片S的時(shí)長tn之和相同。分片模塊調(diào)用SplitApp.Split(),在該函數(shù)中,調(diào)用FFmpeg進(jìn)行具體切片工作。同時(shí),數(shù)據(jù)源需要持續(xù)不斷地產(chǎn)生視頻分片數(shù)據(jù);因此,需要持續(xù)運(yùn)行SplitApp.Split()并調(diào)用FFmpeg命令,使用Java實(shí)現(xiàn)循環(huán)邏輯,直到視頻切片完成為止。分片節(jié)點(diǎn)的處理流程為:獲得視頻文件→調(diào)用Split→保存至HDFS目錄/slices。該功能偽代碼如算法1所示。

    算法1 視頻文件分片模塊。

    輸入 視頻文件;

    輸出 視頻分片統(tǒng)一資源定位符(Uniform Resource Locator, URL)。

    BEGIN

    raw_video←源視頻目錄;t←分片時(shí)長;output←視頻輸出文件URL

    WHILE(true)

    vList=從raw_video目錄獲取視頻列表

    FOR(f:vList)

    SumTime←獲取視頻總時(shí)長;

    start←0;leftTime←0;

    FOR(s=start;leftTime>T;)

    //ffmpeg視頻切片命令

    ffmpeg -ss s -i f -c copy -t t output;

    leftTime←leftTime-T;

    s+=T;

    start=s;

    END FOR

    END FOR

    END WHILE

    通過監(jiān)控上傳目錄raw_video,當(dāng)有視頻文件上傳完成,對該視頻文件進(jìn)行分片,并將分片文件URL作為數(shù)據(jù)源。

    數(shù)據(jù)源的輸出為文本文檔,文本中包含視頻文件名稱和視頻分片的URL,格式為:

    x.avi [空格] /目錄1/目錄2/x1.avi

    建立StreamingContext對象,有以下步驟:

    1)創(chuàng)建配置文件。

    StreamingContext配置代碼格式如下:

    SparkConf().setMaster(url).setAppName(String).

    set(String,String)

    其中set(String,String)函數(shù)可設(shè)置多個(gè)不同的參數(shù),常用配置參數(shù)如表2所示。

    表2 StreamingContext 配置參數(shù)Tab. 2 StreamingContext configuration parameters

    2)參數(shù)傳遞。

    根據(jù)集群硬件配置,合理的設(shè)置參數(shù)值,可以讓系統(tǒng)更穩(wěn)定高效地運(yùn)行,提升流處理作業(yè)效率。將配置文件作為參數(shù)傳遞給StreamingContext():

    val conf=new SparkConf()

    .setMaster(url)

    .setAppName(String)

    .set(String,String

    val ssc=new StreamingContext(conf,Seconds(x))

    StreamingContext產(chǎn)生DStream,即一段連續(xù)的流數(shù)據(jù);除了通過接收數(shù)據(jù)源的數(shù)據(jù)產(chǎn)生DStream,也可通過調(diào)用DStream算子,產(chǎn)生新的DStream。產(chǎn)生DStream的時(shí)間間隔通過參數(shù)Seconds(x)指定,x值越大,產(chǎn)生的DStream的時(shí)間就越長,實(shí)時(shí)性越低。通常在實(shí)時(shí)性要求比較高的流處理模型中,x取較小值。

    對DStream的操作,可調(diào)用相關(guān)操作算子,常用算子如表3所示。

    DStream中包含從數(shù)據(jù)源獲得的數(shù)據(jù),并封裝為一系列RDD,foreachRDD()函數(shù)可對每個(gè)RDD進(jìn)行操作,格式為:

    foreachRDD(func)=>RDD(func)

    該算子將DStream內(nèi)部的RDD取出,可存放在文件系統(tǒng)中、或傳送至網(wǎng)絡(luò)、存入數(shù)據(jù)庫。

    3.2 依賴分析

    通常在進(jìn)行數(shù)據(jù)處理時(shí),不同的數(shù)據(jù)之間有一定的依賴關(guān)系,這種依賴關(guān)系在Spark里稱為Lineage,也即RDD的依賴關(guān)系,使用有向無環(huán)圖(Directed Acyclic Graph, DAG)來表示。因此,在Spark中,按照Lineage生成DAG,要根據(jù)具體的數(shù)據(jù)處理流程來確定。

    RDD有兩種類型的操作算子:Transformation和Action。Transformation類型的操作算子不會立即執(zhí)行,Action型操作算子會立即觸發(fā)作業(yè)(Job)。DAG Scheduler將作業(yè)劃分為階段(Stage),階段包含要執(zhí)行的任務(wù)集合,任務(wù)集合由TaskScheduler分配到節(jié)點(diǎn)上執(zhí)行。劃分階段的依據(jù)是RDD的依賴性,分別如下。

    寬依賴(Wide Dependency):寬依賴指當(dāng)前階段的執(zhí)行,依賴于多個(gè)前一階段的任務(wù)完成。寬依賴如圖2所示。

    表3 DStream操作算子Tab. 3 DStream operators

    圖2 寬依賴示意圖Fig. 2 Schematic diagram of wide dependency

    窄依賴(Narrow Dependency):當(dāng)前階段任務(wù)的執(zhí)行,只與當(dāng)前任務(wù)的前一階段任務(wù)有關(guān)。窄依賴示意圖如圖3所示。

    圖3 窄依賴示意圖Fig. 3 Schematic diagram of narrow dependence

    如果當(dāng)前階段要執(zhí)行,需要多個(gè)前階段執(zhí)行完畢;因此,寬依賴是劃分階段的依據(jù)。結(jié)合本文的研究內(nèi)容,分布式視頻轉(zhuǎn)碼流程有以下7個(gè)步驟:1)讀取視頻文件。2)將視頻文件切分為多個(gè)視頻分片。3)保存視頻分片URL至txt文檔。4)txt文檔作為輸入源。5)解析txt文檔中的視頻分片URL。6)合并已轉(zhuǎn)碼視頻分片為視頻文件。7)調(diào)度URL數(shù)據(jù)至Executor執(zhí)行轉(zhuǎn)碼。

    分析以上步驟的依賴關(guān)系,按照寬依賴和窄依賴概念劃分階段,可以得到面向流處理的視頻轉(zhuǎn)碼模型依賴關(guān)系圖如圖4所示。

    階段1和階段2之間通過GroupByKey將視頻分片合并,有Shuffle過程,該過程有較大網(wǎng)絡(luò)開銷。

    3.3 構(gòu)建RDD模型

    RDD是Spark分布式處理的關(guān)鍵,也是Spark Streaming的重要環(huán)節(jié),結(jié)合分布式流處理的視頻轉(zhuǎn)碼特性,合理劃分Partition、Stage、Task,將源視頻文件名稱和視頻分片文件URL組成的〈K,V〉作為要處理的原始數(shù)據(jù),能有效避免視頻文件因調(diào)度帶來的網(wǎng)絡(luò)開銷和存儲的高I/O。

    圖4 面向分布式視頻轉(zhuǎn)碼的DAGFig. 4 DAG for distributed video transcoding

    構(gòu)建RDD模型,首先要確定在Spark Streaming中的RDD產(chǎn)生和數(shù)據(jù)原理,通過3.2節(jié)針對視頻轉(zhuǎn)碼的依賴劃分階段,構(gòu)建良好的RDD模型。Spark Streaming的核心是操作RDD,DStream最終要分解為一個(gè)或多個(gè)RDD,即數(shù)據(jù)流的分布式。任務(wù)調(diào)度器(Task Scheduler)是并行化的重要環(huán)節(jié)。在Spark中,從細(xì)粒度到粗粒度劃分,處理單元可分為如下:1)工作線程(Executor)。處理數(shù)據(jù)的最小執(zhí)行單位。2)工作節(jié)點(diǎn)(Worker)。一個(gè)工作節(jié)點(diǎn)為一臺物理機(jī)器,在一個(gè)工作節(jié)點(diǎn)上,可以運(yùn)行多個(gè)工作線程。

    工作線程是執(zhí)行處理工作的最小單位,從細(xì)粒度到粗粒度劃分,要處理的業(yè)務(wù)對象可分為如下:1)任務(wù)(Task)。工作線程要處理的最小工作單位,包含一系列處理方法和數(shù)據(jù)分區(qū)(Partition)。2)階段(Stage)。一個(gè)任務(wù)集,階段按照寬依賴和窄依賴劃分;包含一系列寬窄依賴關(guān)系的RDD,如圖5所示。

    圖5 RDD業(yè)務(wù)分層調(diào)度模型Fig. 5 Hierarchical scheduling model for RDD business

    結(jié)合本文的研究工作,按照數(shù)據(jù)粒度從細(xì)到粗劃分,有以下數(shù)據(jù)對象:

    1)分區(qū)(Partition):最小的數(shù)據(jù)單位。結(jié)合本文研究內(nèi)容,將分區(qū)定義為一條〈視頻名 分片名〉文本記錄。

    2)RDD(彈性分布式數(shù)據(jù)集):RDD中定義了多種數(shù)據(jù)處理方式,即操作算子。結(jié)合本文研究內(nèi)容,將RDD定義為包含多個(gè)〈視頻名 分片名〉記錄,以及對這些記錄的處理方法。

    3)DStream(離散數(shù)據(jù)流):DStream包含多個(gè)RDD,按照設(shè)定的單位時(shí)間不斷產(chǎn)生。在本文中,產(chǎn)生DStream的數(shù)據(jù)源是包含〈視頻名 分片URL〉記錄的txt文檔。

    以上分別對處理單元、業(yè)務(wù)對象、數(shù)據(jù)對象按照粒度由小到大進(jìn)行區(qū)分,并結(jié)合本文研究內(nèi)容,將包含視頻分片信息的文本文檔作為數(shù)據(jù)源,〈視頻名 分片URL〉為最小數(shù)據(jù)單元。將以上內(nèi)容結(jié)合3.2節(jié)的依賴分析,可得基于視頻分片的RDD數(shù)據(jù)流圖,如圖6所示。

    圖6 RDD數(shù)據(jù)流圖Fig. 6 RDD data stream diagram

    根據(jù)數(shù)據(jù)流圖,可建立RDD編程模型,偽代碼如算法2所示。

    算法2 RDD編程模型。

    輸入 DStream;

    輸出 視頻分片URL。

    BEGIN

    DStream.foreachRDD

    rdd←從DStream中取得一個(gè)RDD

    IF(RDD不為空)

    rdd1←rdd.map(x=>x.split("")(1))

    item←從rdd中取得一個(gè)元素

    rdd1.foreach

    url←從rdd1中取得一個(gè)元素

    調(diào)用轉(zhuǎn)碼命令:ffmpeg -i url -c:v libvpx-vp9 output.webm

    將output.webm移動至HDFS分片目錄中

    END foreach

    END IF

    END foreach RDD

    數(shù)據(jù)源輸出的是一條文本記錄,該記錄則為RDD中的一個(gè)基本元素,格式為:

    視頻文件名[空格]視頻分片文件URL

    RDD調(diào)用map算子進(jìn)行轉(zhuǎn)換生成RDD1,通過對RDD1進(jìn)行foreach()運(yùn)算,得到RDD1中的記錄是一條視頻分片文件URL。

    3.4 視頻分片文件合并模型

    根據(jù)流處理的特性,數(shù)據(jù)持續(xù)地產(chǎn)生和處理,因此要對舊的文件和緩存進(jìn)行清理,防止因空間不足而導(dǎo)致系統(tǒng)不穩(wěn)定。視頻的合并要按照視頻分片的先后次序進(jìn)行,在分布式轉(zhuǎn)碼過程中,無法保證視頻按照先后順序依次轉(zhuǎn)碼;因此,需要等待視頻文件的所有分片都轉(zhuǎn)碼完成后,再進(jìn)行合并。視頻合并偽代碼如算法3所示。

    算法3 流處理視頻合并。

    輸入 視頻名稱,分片URL列表;

    輸出 完整視頻文件。

    BEGIN

    key←視頻名稱;values←分片URL列表;output←完整視頻輸出文件

    新建文本concatFile←對values進(jìn)行排序

    //運(yùn)行合并命令

    ffmpeg -f concat -safe 0 -i concatFile -c copy output

    上傳output到HDFS

    END

    concatFile文本文件中的分片在時(shí)間上是有序的,否則會導(dǎo)致視頻內(nèi)容錯(cuò)亂。

    4 實(shí)驗(yàn)結(jié)果與分析

    4.1 系統(tǒng)部署

    基于本文所提出的快速視頻轉(zhuǎn)碼方法,設(shè)計(jì)和實(shí)現(xiàn)了快速視頻轉(zhuǎn)碼原型系統(tǒng)。該原型系統(tǒng)部署在四川師范大學(xué)云計(jì)算實(shí)驗(yàn)室私有云平臺,該云平臺提供了友好的彈性虛擬機(jī)管理界面,通過管理界面可以對目標(biāo)虛擬機(jī)進(jìn)行復(fù)制創(chuàng)建,可短時(shí)間按需創(chuàng)建包含一定數(shù)量節(jié)點(diǎn)的同構(gòu)集群環(huán)境;同時(shí),根據(jù)不同的需求,可彈性擴(kuò)展虛擬機(jī)硬件配置,這極大地方便了實(shí)驗(yàn)的開展。

    4.2 運(yùn)行環(huán)境

    4.2.1 硬件環(huán)境

    Master節(jié)點(diǎn)需要運(yùn)行HDFS的NameNode進(jìn)程、Spark的Master進(jìn)程。該節(jié)點(diǎn)出現(xiàn)故障會對集群造成災(zāi)難性影響,因此該節(jié)點(diǎn)配置較大內(nèi)存和較多核CPU。

    SplitServer節(jié)點(diǎn)的主要工作是將視頻切分,切分工作實(shí)際上是將音視頻數(shù)據(jù)按照輸入?yún)?shù)復(fù)制并保存為音視頻數(shù)據(jù)塊。復(fù)制為多個(gè)小塊的過程比轉(zhuǎn)碼所需要的CPU運(yùn)算力要低得多;因此,切分過程由一個(gè)節(jié)點(diǎn)完成即可,為了應(yīng)對較大的視頻文件存儲問題,切分節(jié)點(diǎn)SplitServer除了配置與Master節(jié)點(diǎn)相同的CPU和內(nèi)存外,磁盤容量提升至100 GB。在實(shí)驗(yàn)中將SplitServer也視為數(shù)據(jù)源。

    MergeServer工作與SplitServer相反,把轉(zhuǎn)碼后的視頻切片,有序合并成一個(gè)視頻文件,再上傳至HDFS保存。MergeServer的輸入數(shù)據(jù)是有序的、完整的、已經(jīng)轉(zhuǎn)碼的視頻分片。

    Slave節(jié)點(diǎn),即運(yùn)行HDFS的Datanode節(jié)點(diǎn)、Spark Streaming的Work節(jié)點(diǎn),是分布式存儲、分布式轉(zhuǎn)碼工作的主要執(zhí)行節(jié)點(diǎn)。Slave節(jié)點(diǎn)初始配置4核心CPU、8 GB內(nèi)存、40 GB存儲;初始數(shù)量20個(gè),可根據(jù)實(shí)驗(yàn)要求,在云管理后臺進(jìn)行彈性配置。詳細(xì)配置如表4所示。

    表4 系統(tǒng)部署硬件配置Tab. 4 System deployment hardware configuration

    4.2.2 軟件環(huán)境

    本文系統(tǒng)所有軟件運(yùn)行在Linux平臺,私有云提供了64位CentOS 6.1操作系統(tǒng),經(jīng)測試,本文系統(tǒng)所需要的軟件都能正常穩(wěn)定地運(yùn)行在64位CentOS 6.1系統(tǒng)中。軟件詳細(xì)參數(shù)如表5所示。

    表5 系統(tǒng)部署軟件環(huán)境Tab. 5 System deployment software environment

    根據(jù)節(jié)點(diǎn)信息,繪制節(jié)點(diǎn)網(wǎng)絡(luò)拓?fù)鋱D,如圖7所示。

    圖7 節(jié)點(diǎn)網(wǎng)絡(luò)拓?fù)銯ig. 7 Node network topology

    Master節(jié)點(diǎn)與Slave節(jié)點(diǎn)配置文件基本一致。通過配置一個(gè)初始節(jié)點(diǎn),再通過私有云Web管理后臺對該節(jié)點(diǎn)進(jìn)行復(fù)制、重新分配網(wǎng)卡MAC、重新分配IP的方式快速創(chuàng)建其他節(jié)點(diǎn)。

    Hadoop配置目錄中的slaves文件指定集群由哪些節(jié)點(diǎn)組成,每行分別填寫節(jié)點(diǎn)名“slave1”至“slave20”,由20個(gè)節(jié)點(diǎn)組成slaves集群。

    4.3 實(shí)驗(yàn)結(jié)果與分析

    本節(jié)實(shí)驗(yàn)對象選取3個(gè)不同編碼的視頻文件。根據(jù)具體實(shí)驗(yàn),選取相應(yīng)視頻文件進(jìn)行實(shí)驗(yàn)分析,因視頻文件通常帶有較多參數(shù)信息,不同的參數(shù)會在解碼和編碼過程中,對視頻文件產(chǎn)生不同的損益。視頻文件的主要參數(shù)如表6所示。

    表6 實(shí)驗(yàn)視頻對象信息表Tab. 6 Experimental video object informationTable

    4.3.1 視頻分片大小實(shí)驗(yàn)與分析

    SplitServer切分的視頻分片保存在HDFS中,切分依據(jù)為時(shí)間長度(單位為ms);通過不同的時(shí)長產(chǎn)生不同大小的視頻分片文件。HDFS默認(rèn)塊大小128 MB,視頻分片大小根據(jù)視頻文件的格式、碼率、分辨率的不同而有差異。本實(shí)驗(yàn)分別設(shè)置不同時(shí)長,分析不同大小的視頻分片的轉(zhuǎn)碼效率。視頻分片大小對轉(zhuǎn)碼效率的影響如圖8所示。

    圖8 視頻分片大小對轉(zhuǎn)碼效率的影響Fig. 8 Effect of video fragment size on transcoding efficiency

    由圖8可知,在視頻分片大小為128 MB時(shí),可得到最高轉(zhuǎn)碼效率,即當(dāng)文件越來越接近HDFS塊文件時(shí),網(wǎng)絡(luò)開銷越?。划?dāng)文件大于HDFS塊大小時(shí),需要從多個(gè)節(jié)點(diǎn)的多個(gè)塊中讀取數(shù)據(jù),網(wǎng)絡(luò)開銷增大,任務(wù)處理時(shí)間變長。

    4.3.2 流處理產(chǎn)生DStream時(shí)長實(shí)驗(yàn)與分析

    Spark Streaming依據(jù)StreamContext()設(shè)置的參數(shù)產(chǎn)生DStream,本實(shí)驗(yàn)分別設(shè)置不同時(shí)長,分析相應(yīng)的轉(zhuǎn)碼效率。DStream產(chǎn)生間隔對轉(zhuǎn)碼效率的影響如圖9所示。

    圖9 DStream產(chǎn)生間隔對轉(zhuǎn)碼效率的影響Fig. 9 Effect of DStream production interval on transcoding efficiency

    由圖9可知,隨著時(shí)間間隔的增大,轉(zhuǎn)碼效率逐漸提高,在時(shí)間間隔為5 s時(shí),可得最高轉(zhuǎn)碼效率,然后隨著時(shí)間間隔增大,效率逐漸變低,并且逐漸穩(wěn)定在20 min。太短的時(shí)間間隔會產(chǎn)生冗余的空作業(yè),減少空作業(yè)是優(yōu)化的一個(gè)方向;時(shí)間間隔增長時(shí),因硬件配置的限制,集群性能無法應(yīng)對短時(shí)間的大量轉(zhuǎn)碼作業(yè),造成作業(yè)積壓,根據(jù)調(diào)度算法,將處理作業(yè)加入隊(duì)列,流處理的實(shí)時(shí)性降低。

    4.3.3 視頻不同編碼互轉(zhuǎn)實(shí)驗(yàn)與分析

    本實(shí)驗(yàn)對常見的視頻編碼之間的相互轉(zhuǎn)換進(jìn)行分析,封裝格式為MKV。實(shí)驗(yàn)對象如表6中A.mkv所示。

    本實(shí)驗(yàn)選取3種常見的視頻編碼進(jìn)行互轉(zhuǎn)碼實(shí)驗(yàn),為了結(jié)果的準(zhǔn)確有效,使用控制變量法,對A.mkv進(jìn)行轉(zhuǎn)碼時(shí),除編碼方法外,其他參數(shù)不作調(diào)整,如表7所示。

    表7 編碼相互轉(zhuǎn)換設(shè)計(jì)Tab. 7 Coding mutual conversion design

    因?yàn)橄嗤幋a的視頻轉(zhuǎn)碼實(shí)際上是將原來的數(shù)據(jù)進(jìn)行復(fù)制,沒有進(jìn)行解碼、重編碼工作;所以對相同視頻轉(zhuǎn)碼的轉(zhuǎn)換時(shí)間開銷設(shè)置為“1”。對表6中的視頻文件進(jìn)行不同編碼的轉(zhuǎn)制,不同視頻編碼的轉(zhuǎn)碼效率如圖10所示。

    圖10 不同視頻編碼的轉(zhuǎn)碼效率Fig. 10 Transcoding efficiency of different video encoding

    實(shí)驗(yàn)結(jié)果表明,不同的編碼之間進(jìn)行轉(zhuǎn)換效率差異很大。不同的視頻編碼,有不同的編碼算法。設(shè)有A、B視頻文件分別用A1、B1編碼算法進(jìn)行編碼。視頻轉(zhuǎn)碼的流程如圖1,原理是首先將A視頻按照A1算法進(jìn)行解碼,得到視頻幀,將視頻幀按照B2進(jìn)行編碼,得到B視頻。因此,不同的視頻編碼因?yàn)樗惴ǖ牟煌室膊煌?/p>

    4.3.4 源視頻與切片時(shí)長關(guān)系實(shí)驗(yàn)

    通常碼率越大、分辨率越高的視頻占用的空間也會越大。通過對不同大小的源視頻進(jìn)行不同方式的切片實(shí)驗(yàn),有助于發(fā)現(xiàn)最高效的切分方法。本實(shí)驗(yàn)對源視頻大小/切片大小進(jìn)行實(shí)驗(yàn),為了避免相同視頻編碼方法的相互轉(zhuǎn)換,本實(shí)驗(yàn)的目標(biāo)視頻編碼為MPEG-4,封裝格式為avi。不同時(shí)間長度的視頻文件轉(zhuǎn)碼效率如圖11所示。

    圖11 不同時(shí)間長度的視頻文件轉(zhuǎn)碼效率Fig. 11 Video file transcoding efficiency with different time lengths

    由圖11分析可知,源視頻的參數(shù)不同,切分的視頻分片大小不同,轉(zhuǎn)碼效率也不同。

    4.3.5 節(jié)點(diǎn)/CPU核心數(shù)量對轉(zhuǎn)碼效率的影響

    1)節(jié)點(diǎn)數(shù)量-轉(zhuǎn)碼效率。

    通過對集群節(jié)點(diǎn)數(shù)量進(jìn)行調(diào)整,發(fā)現(xiàn)節(jié)點(diǎn)數(shù)量與轉(zhuǎn)碼效率的關(guān)系。本實(shí)驗(yàn)共啟用20個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)分配1個(gè)CPU核心。起始節(jié)點(diǎn)數(shù)量從2開始,依次遞增1。實(shí)驗(yàn)對象為A.mkv、B.avi、C.mp4,三個(gè)視頻文件不分次序轉(zhuǎn)碼為flv格式,編碼為H.264,10次實(shí)驗(yàn)后取均值,結(jié)果如圖12所示。

    圖12 集群節(jié)點(diǎn)數(shù)量對轉(zhuǎn)碼效率的影響Fig. 12 Effect of number of cluster nodes on transcoding efficiency

    由圖12可以看出,隨著節(jié)點(diǎn)的增加、集群計(jì)算能力的增強(qiáng),視頻轉(zhuǎn)碼消耗的時(shí)間不斷減少。在分布式系統(tǒng)中,節(jié)點(diǎn)的增加也意味著分布率的提升。在Spark Streaming中,同一個(gè)節(jié)點(diǎn),可能同時(shí)運(yùn)行著多個(gè)CPU核心。在節(jié)點(diǎn)數(shù)量為11時(shí),轉(zhuǎn)碼效率沒有進(jìn)一步提升,隨著節(jié)點(diǎn)數(shù)量的增加,三個(gè)視頻文件的轉(zhuǎn)碼總時(shí)間在27 min左右。該實(shí)驗(yàn)結(jié)果表明,當(dāng)集群節(jié)點(diǎn)達(dá)到一定規(guī)模、轉(zhuǎn)碼任務(wù)不變的情況下,隨著集群節(jié)點(diǎn)的增加,并不能帶來效率的繼續(xù)提升。通過查看日志發(fā)現(xiàn),部分節(jié)點(diǎn)并沒有執(zhí)行轉(zhuǎn)碼任務(wù),處于空置狀態(tài)。

    2)CPU核心數(shù)量-轉(zhuǎn)碼效率。

    本實(shí)驗(yàn)通過更改Spark Shell程序提交參數(shù),完成對CPU核心數(shù)量的關(guān)閉/啟用,命令格式如下:

    spark-submit --master spark:master:7 077 --spark.cores.maxNa.jar

    將N取1~10。實(shí)驗(yàn)對象為A.mkv、B.avi、C.mp4,三個(gè)視頻文件不分次序轉(zhuǎn)碼為flv格式,編碼為H.264,10次實(shí)驗(yàn)后取均值,得到運(yùn)行結(jié)果如圖13所示。

    圖13 集群CPU核心總數(shù)量對轉(zhuǎn)碼效率的影響Fig. 13 Effect of total number of cluster CPU cores on transcoding efficiency

    集群使用的CPU總核心數(shù)量越多,視頻轉(zhuǎn)碼消耗的時(shí)間越小,轉(zhuǎn)碼效率越高,至18個(gè)時(shí),效率沒有隨著核心數(shù)的增多而提升,這與增加集群節(jié)點(diǎn)數(shù)量的趨勢大致相同。進(jìn)一步研究節(jié)點(diǎn)數(shù)量與集群CPU總核心數(shù)量之間的轉(zhuǎn)碼差異,結(jié)果如圖14所示。

    圖14 不同集群總CPU/核心數(shù)量的轉(zhuǎn)碼效率對比Fig. 14 Transcoding efficiency comparison of of different cluster total CPUs/cores

    從圖14中可以看出,隨著集群節(jié)點(diǎn)數(shù)量與集群CPU總核心數(shù)量的增多,視頻轉(zhuǎn)碼效率在不斷地提升;但當(dāng)集群總節(jié)點(diǎn)數(shù)與CPU總核心數(shù)為8個(gè)時(shí),兩者轉(zhuǎn)碼用時(shí)相同;繼續(xù)增加CPU核心數(shù)量和節(jié)點(diǎn)數(shù)量,CPU核心數(shù)量的增加能帶來更高的效率。集群節(jié)點(diǎn)數(shù)在12個(gè)時(shí),達(dá)到最大轉(zhuǎn)碼效率;CPU總核心在集群節(jié)點(diǎn)數(shù)為18個(gè)時(shí)達(dá)到最大轉(zhuǎn)碼效率。結(jié)合Spark調(diào)度原理,可進(jìn)一步分析出現(xiàn)這種差異是因?yàn)檎{(diào)度管理器會優(yōu)先將作業(yè)交給已經(jīng)存儲有視頻分片的節(jié)點(diǎn)進(jìn)行處理,從而降低數(shù)據(jù)在集群中傳輸帶來的網(wǎng)絡(luò)開銷。

    4.3.6 不同平臺實(shí)現(xiàn)的視頻轉(zhuǎn)碼系統(tǒng)對照實(shí)驗(yàn)

    目前使用Hadoop實(shí)現(xiàn)的分布式視頻轉(zhuǎn)碼方法很多,相關(guān)學(xué)術(shù)研究資料豐富,視頻轉(zhuǎn)碼方案也很成熟。本文對文獻(xiàn)[15]、文獻(xiàn)[19]、文獻(xiàn)[20]的Hadoop的分布式轉(zhuǎn)碼方案進(jìn)行了研究;改進(jìn)了需要手工進(jìn)行視頻分片的問題,進(jìn)一步實(shí)現(xiàn)了一套基于Hadoop的分布式視頻轉(zhuǎn)碼系統(tǒng)。因?yàn)镾park Streaming與Hadoop有良好的兼容性,所以兩者可在相同的硬件環(huán)境中運(yùn)行,因此,可認(rèn)為基于Hadoop分布式的視頻轉(zhuǎn)碼方案與基于Spark Streaming的分布式流處理視頻轉(zhuǎn)碼方案有相同的硬件和軟件環(huán)境。通過對三個(gè)不同的視頻文件進(jìn)行轉(zhuǎn)碼,探索基于Spark Streaming實(shí)現(xiàn)的轉(zhuǎn)碼系統(tǒng)與基于Hadoop實(shí)現(xiàn)的視頻轉(zhuǎn)碼系統(tǒng)中的效率問題。實(shí)驗(yàn)對象信息如表6所示。

    分別使用基于Hadoop實(shí)現(xiàn)的分布式轉(zhuǎn)碼系統(tǒng)和基于Spark Streaming實(shí)現(xiàn)的分布式流處理轉(zhuǎn)碼系統(tǒng)對A.mkv、B.avi、C.mp4進(jìn)行目標(biāo)編碼方法為MPEG-4的轉(zhuǎn)碼。通過10次實(shí)驗(yàn),每項(xiàng)結(jié)果取平均值,結(jié)果如圖15所示。

    圖15 Hadoop與Spark Streaming分布式轉(zhuǎn)碼系統(tǒng)效率對比Fig. 15 Efficiency comparison between Hadoop and Spark Streaming distributed transcoding systems

    通過圖15可以得出,基于Spark Streaming實(shí)現(xiàn)的分布式流處理視頻轉(zhuǎn)碼系統(tǒng)比基于Hadoop實(shí)現(xiàn)的分布式轉(zhuǎn)碼系統(tǒng)的轉(zhuǎn)碼效率提升了26.7%。理論分析結(jié)果表明,在視頻文件切分到視頻分片轉(zhuǎn)碼環(huán)節(jié),不需要視頻文件全部切分完成即可進(jìn)行轉(zhuǎn)碼工作,通過Spark構(gòu)建的DAG任務(wù)模型節(jié)省了這部分的時(shí)間開銷,提升了轉(zhuǎn)碼效率。

    4.3.7 與文獻(xiàn)[19]的視頻轉(zhuǎn)碼方法對照實(shí)驗(yàn)

    本文按照文獻(xiàn)[19]提出的基于Hadoop平臺的視頻并行轉(zhuǎn)碼方法,實(shí)現(xiàn)了一種基于Hadoop的視頻轉(zhuǎn)碼系統(tǒng),與基于本文所提出視頻轉(zhuǎn)碼方法實(shí)現(xiàn)的原型系統(tǒng)進(jìn)行對比實(shí)驗(yàn)。實(shí)驗(yàn)硬件配置為4個(gè)節(jié)點(diǎn)(CPU為雙核1 GHz、內(nèi)存為16 GB),通過四川師范大學(xué)私有云快速創(chuàng)建與該硬件參數(shù)相近的節(jié)點(diǎn)。實(shí)驗(yàn)選取了三個(gè)視頻文件作為實(shí)驗(yàn)對象[19],參數(shù)如表8所示。

    表8 視頻文件信息Tab. 8 Video file information

    表8中的實(shí)驗(yàn)對象通過FFmpeg對一段視頻進(jìn)行處理生成,實(shí)驗(yàn)規(guī)定了視頻轉(zhuǎn)碼后的目標(biāo)參數(shù)[19],如表9所示。

    表9 視頻轉(zhuǎn)碼參數(shù)Tab. 9 Video transcoding parameters

    針對同一視頻進(jìn)行了10次實(shí)驗(yàn),取平均轉(zhuǎn)碼時(shí)間,實(shí)驗(yàn)結(jié)果對比如圖16所示。

    圖16 不同方案的轉(zhuǎn)碼效率對比Fig. 16 Transcoding efficiency comparison of different schemes

    和文獻(xiàn)[19]的方法相比,本文方法對Video1的轉(zhuǎn)碼效率提升21%,對Video2的轉(zhuǎn)碼效率提升了19.7%,對Video3的轉(zhuǎn)碼效率提升了19.6%;三個(gè)視頻的平均效率提升了20.1%。對比實(shí)驗(yàn)結(jié)果表明,本文提出的視頻轉(zhuǎn)碼方法較文獻(xiàn)[19]方法效率顯著提高。

    5 結(jié) 語

    現(xiàn)有的單機(jī)視頻轉(zhuǎn)碼方法存在的轉(zhuǎn)碼速度較慢、瓶頸等問題給用戶帶來較差體驗(yàn);現(xiàn)有的基于Hadoop的并行轉(zhuǎn)碼方法比傳統(tǒng)單機(jī)轉(zhuǎn)碼在轉(zhuǎn)碼速度上有較大提升,但其面向批處理的特點(diǎn)決定了轉(zhuǎn)碼過程存在較多等待時(shí)間,使得轉(zhuǎn)碼效率提升不夠充分。為此,將Spark Streaming引入到視頻轉(zhuǎn)碼的設(shè)計(jì)之中,提出了一種面向流處理的基于并行計(jì)算的快速視頻轉(zhuǎn)碼方法。實(shí)驗(yàn)表明,所提出的基于Spark Streaming的視頻轉(zhuǎn)碼方法在轉(zhuǎn)碼效率上有顯著提升。本文所提方法也有不足,即當(dāng)任務(wù)量太大時(shí),集群超負(fù)荷工作,也會形成隊(duì)列工作。同時(shí),本文采用Fair調(diào)度算法,沒有針對視頻流的特點(diǎn)進(jìn)行算法上的改進(jìn)。因此在使用分布式流處理技術(shù)進(jìn)行的視頻轉(zhuǎn)碼工作,仍有很大的改進(jìn)空間。

    猜你喜歡
    轉(zhuǎn)碼視頻文件分片
    移動云盤在線轉(zhuǎn)碼功能技術(shù)研究
    流媒體視頻文件相似性識別的方法
    上下分片與詞的時(shí)空佈局
    詞學(xué)(2022年1期)2022-10-27 08:06:12
    隨心定制視頻文件的縮略圖
    視頻轉(zhuǎn)碼技術(shù)在廣播電視中的應(yīng)用研究
    締客世界(2020年1期)2020-12-12 18:18:28
    分片光滑邊值問題的再生核方法
    CDN存量MP4視頻播放優(yōu)化方法
    基于模糊二分查找的幀分片算法設(shè)計(jì)與實(shí)現(xiàn)
    基于IPTV點(diǎn)播業(yè)務(wù)的視頻分段式轉(zhuǎn)碼方案的研究與應(yīng)用
    傳播力研究(2018年7期)2018-05-10 09:42:47
    基于Hadoop 的分布式視頻轉(zhuǎn)碼方案
    欧美精品国产亚洲| 美女中出高潮动态图| 亚洲久久久国产精品| 国产免费一级a男人的天堂| 人人妻人人澡人人看| 国内揄拍国产精品人妻在线| 国产黄片视频在线免费观看| 欧美成人精品欧美一级黄| 亚洲欧美成人精品一区二区| 亚洲av国产av综合av卡| 一边亲一边摸免费视频| 亚洲四区av| 九九爱精品视频在线观看| 麻豆成人av视频| 婷婷色麻豆天堂久久| 国产亚洲欧美精品永久| 水蜜桃什么品种好| 日韩精品免费视频一区二区三区 | 美女内射精品一级片tv| 亚洲图色成人| 五月开心婷婷网| 亚洲av国产av综合av卡| 18禁在线播放成人免费| 嘟嘟电影网在线观看| 久久亚洲国产成人精品v| 国内少妇人妻偷人精品xxx网站| 亚州av有码| 插阴视频在线观看视频| videos熟女内射| 亚洲经典国产精华液单| 丰满人妻一区二区三区视频av| 大片免费播放器 马上看| 久久久久久久大尺度免费视频| 亚洲无线观看免费| 国产熟女午夜一区二区三区 | 青春草国产在线视频| 80岁老熟妇乱子伦牲交| 亚洲精品,欧美精品| 噜噜噜噜噜久久久久久91| 国产精品99久久99久久久不卡 | 一级,二级,三级黄色视频| 菩萨蛮人人尽说江南好唐韦庄| 欧美日韩视频高清一区二区三区二| 秋霞在线观看毛片| 国产精品人妻久久久久久| 精品人妻偷拍中文字幕| 美女xxoo啪啪120秒动态图| 秋霞在线观看毛片| 人妻一区二区av| 日本与韩国留学比较| 亚洲av电影在线观看一区二区三区| 欧美精品亚洲一区二区| 18+在线观看网站| 这个男人来自地球电影免费观看 | 99热全是精品| 免费大片黄手机在线观看| 哪个播放器可以免费观看大片| 人人澡人人妻人| 妹子高潮喷水视频| 看十八女毛片水多多多| 亚州av有码| 女性被躁到高潮视频| 国产免费又黄又爽又色| 亚洲精品日韩在线中文字幕| 日本av手机在线免费观看| 在线观看www视频免费| 亚洲无线观看免费| 日本wwww免费看| 亚洲高清免费不卡视频| 精品一区二区三卡| 亚洲精品久久久久久婷婷小说| av天堂久久9| 性色av一级| 午夜福利,免费看| 国产午夜精品久久久久久一区二区三区| 亚洲国产精品一区三区| 九九爱精品视频在线观看| av福利片在线观看| 有码 亚洲区| 国产成人aa在线观看| 国产精品国产av在线观看| 亚洲av中文av极速乱| 伦理电影免费视频| 麻豆乱淫一区二区| 伦理电影大哥的女人| 亚洲欧洲国产日韩| 国产老妇伦熟女老妇高清| 久久婷婷青草| 国产一区二区三区av在线| 日本爱情动作片www.在线观看| 国产精品伦人一区二区| 欧美日韩一区二区视频在线观看视频在线| 多毛熟女@视频| 久久久久国产精品人妻一区二区| 免费大片黄手机在线观看| 亚洲怡红院男人天堂| 亚洲婷婷狠狠爱综合网| 国产av一区二区精品久久| 日日啪夜夜撸| 人人妻人人添人人爽欧美一区卜| av线在线观看网站| 99精国产麻豆久久婷婷| 各种免费的搞黄视频| 麻豆成人午夜福利视频| 色5月婷婷丁香| 亚洲天堂av无毛| 卡戴珊不雅视频在线播放| 丝瓜视频免费看黄片| 国产男女超爽视频在线观看| 国产亚洲午夜精品一区二区久久| 国产精品伦人一区二区| 免费av不卡在线播放| 18禁裸乳无遮挡动漫免费视频| 日韩亚洲欧美综合| 日韩成人伦理影院| 观看av在线不卡| 国产精品久久久久久av不卡| 日韩电影二区| 欧美日韩视频精品一区| 六月丁香七月| 久久国产精品男人的天堂亚洲 | av.在线天堂| 亚洲国产欧美在线一区| 久久精品久久久久久久性| 欧美日本中文国产一区发布| 国产高清不卡午夜福利| 99久久中文字幕三级久久日本| 麻豆成人午夜福利视频| 中国美白少妇内射xxxbb| 一区在线观看完整版| av卡一久久| 日本91视频免费播放| 午夜福利网站1000一区二区三区| 嫩草影院新地址| 亚洲美女搞黄在线观看| 永久免费av网站大全| 搡老乐熟女国产| 欧美 日韩 精品 国产| 成人亚洲欧美一区二区av| 国产精品人妻久久久影院| 国产精品99久久99久久久不卡 | 精华霜和精华液先用哪个| 啦啦啦中文免费视频观看日本| 日日啪夜夜爽| 亚洲真实伦在线观看| 一二三四中文在线观看免费高清| 国产淫语在线视频| 午夜av观看不卡| 亚洲高清免费不卡视频| 日韩电影二区| 国产午夜精品久久久久久一区二区三区| 美女福利国产在线| 国产色爽女视频免费观看| 一级,二级,三级黄色视频| 免费观看性生交大片5| 久久精品国产a三级三级三级| 国产成人精品无人区| 中国国产av一级| 欧美成人午夜免费资源| 91午夜精品亚洲一区二区三区| 观看美女的网站| 中文字幕人妻熟人妻熟丝袜美| 欧美精品人与动牲交sv欧美| 少妇裸体淫交视频免费看高清| 九九爱精品视频在线观看| 三级国产精品欧美在线观看| 欧美性感艳星| 精品一区二区三卡| 草草在线视频免费看| 老司机影院成人| 亚洲性久久影院| 国产成人91sexporn| 国产精品一区www在线观看| 国产毛片在线视频| 丰满人妻一区二区三区视频av| 国产中年淑女户外野战色| www.av在线官网国产| 一本色道久久久久久精品综合| 狂野欧美激情性bbbbbb| 美女脱内裤让男人舔精品视频| 91久久精品国产一区二区三区| 九九爱精品视频在线观看| 日韩欧美 国产精品| 18禁在线播放成人免费| 成人综合一区亚洲| 精品国产乱码久久久久久小说| 日韩亚洲欧美综合| 国产精品一区二区在线观看99| 午夜激情久久久久久久| 久久精品国产亚洲av天美| 日韩人妻高清精品专区| 国语对白做爰xxxⅹ性视频网站| 国产av一区二区精品久久| 免费播放大片免费观看视频在线观看| 少妇人妻精品综合一区二区| 日本免费在线观看一区| 国产黄片视频在线免费观看| 午夜视频国产福利| 丰满人妻一区二区三区视频av| 人妻系列 视频| 黄色日韩在线| 青春草亚洲视频在线观看| 高清毛片免费看| 天天操日日干夜夜撸| 在线观看美女被高潮喷水网站| 中文字幕人妻熟人妻熟丝袜美| 亚洲精品久久久久久婷婷小说| 一区二区三区免费毛片| 国产精品不卡视频一区二区| 亚洲自偷自拍三级| 老熟女久久久| 免费观看a级毛片全部| 我要看黄色一级片免费的| 尾随美女入室| 久久久国产一区二区| 女的被弄到高潮叫床怎么办| 91午夜精品亚洲一区二区三区| 国产精品久久久久久av不卡| 国产精品国产av在线观看| 99久久精品热视频| 欧美丝袜亚洲另类| 中文天堂在线官网| 国产欧美日韩一区二区三区在线 | 国产精品99久久99久久久不卡 | 国产午夜精品久久久久久一区二区三区| 午夜91福利影院| 午夜免费男女啪啪视频观看| www.色视频.com| 韩国av在线不卡| 国产精品久久久久久久电影| 久久韩国三级中文字幕| 一个人看视频在线观看www免费| 久久久国产一区二区| 国产爽快片一区二区三区| 日韩一本色道免费dvd| 精品卡一卡二卡四卡免费| 国产午夜精品一二区理论片| 免费不卡的大黄色大毛片视频在线观看| 丰满饥渴人妻一区二区三| 插逼视频在线观看| 高清不卡的av网站| 麻豆成人av视频| 国产男人的电影天堂91| 国产欧美日韩一区二区三区在线 | 亚洲国产精品国产精品| av播播在线观看一区| 美女cb高潮喷水在线观看| 99国产精品免费福利视频| 在线观看三级黄色| 成年av动漫网址| 国产极品天堂在线| 曰老女人黄片| 国产精品久久久久久久电影| 六月丁香七月| 国产成人精品福利久久| 9色porny在线观看| 丰满迷人的少妇在线观看| av在线老鸭窝| 精品久久久久久电影网| 中文字幕亚洲精品专区| av在线观看视频网站免费| 亚洲四区av| 伦理电影大哥的女人| 激情五月婷婷亚洲| 国产色婷婷99| 色吧在线观看| 伊人久久国产一区二区| 国产极品粉嫩免费观看在线 | 乱人伦中国视频| 国产亚洲5aaaaa淫片| 在现免费观看毛片| 国产熟女欧美一区二区| 美女福利国产在线| 岛国毛片在线播放| 亚洲色图综合在线观看| 国产探花极品一区二区| 久久午夜综合久久蜜桃| 少妇被粗大的猛进出69影院 | 三级国产精品欧美在线观看| 久久久久久久亚洲中文字幕| 亚洲怡红院男人天堂| 国产精品久久久久久精品古装| 成人毛片a级毛片在线播放| 国产成人a∨麻豆精品| 国产精品不卡视频一区二区| 国产视频首页在线观看| 午夜免费观看性视频| 一级毛片 在线播放| 美女视频免费永久观看网站| 国产极品天堂在线| 秋霞在线观看毛片| 91午夜精品亚洲一区二区三区| 我要看黄色一级片免费的| 国产白丝娇喘喷水9色精品| 18禁在线播放成人免费| 欧美老熟妇乱子伦牲交| 91久久精品国产一区二区三区| 日本欧美视频一区| 亚洲自偷自拍三级| 国产成人精品一,二区| 精品久久久久久电影网| av线在线观看网站| 日本wwww免费看| 丝袜在线中文字幕| 如日韩欧美国产精品一区二区三区 | 国产一区二区在线观看日韩| 免费看av在线观看网站| 亚洲精品,欧美精品| 熟女人妻精品中文字幕| 欧美精品一区二区大全| 丝袜脚勾引网站| 色网站视频免费| 日日爽夜夜爽网站| 伦理电影大哥的女人| 久久99热这里只频精品6学生| 另类亚洲欧美激情| 夫妻午夜视频| 成年女人在线观看亚洲视频| 日韩av免费高清视频| 97在线人人人人妻| 久久久久久久久大av| 久久久久久人妻| 中文欧美无线码| 乱系列少妇在线播放| 久久人妻熟女aⅴ| 99九九在线精品视频 | 一级毛片我不卡| h日本视频在线播放| 日日摸夜夜添夜夜爱| 欧美人与善性xxx| 久久午夜综合久久蜜桃| 人妻一区二区av| 国产高清国产精品国产三级| 蜜桃在线观看..| 一级a做视频免费观看| 国产色婷婷99| 日本猛色少妇xxxxx猛交久久| 在线观看一区二区三区激情| 国产精品人妻久久久影院| 日本91视频免费播放| 国产成人免费观看mmmm| 乱码一卡2卡4卡精品| 国产伦精品一区二区三区视频9| 亚洲国产欧美日韩在线播放 | av黄色大香蕉| 一本色道久久久久久精品综合| 久久精品国产a三级三级三级| 成人国产麻豆网| 纯流量卡能插随身wifi吗| 亚洲精品日韩av片在线观看| 亚洲国产成人一精品久久久| 看非洲黑人一级黄片| 国产精品久久久久久精品古装| av播播在线观看一区| 色视频www国产| 日本与韩国留学比较| 99热这里只有是精品在线观看| 2022亚洲国产成人精品| 99热这里只有是精品在线观看| 国产极品天堂在线| 亚洲成人一二三区av| 欧美精品一区二区免费开放| 欧美 日韩 精品 国产| 精华霜和精华液先用哪个| 建设人人有责人人尽责人人享有的| 久久久亚洲精品成人影院| 亚洲欧美一区二区三区国产| 久久久午夜欧美精品| 99热全是精品| 国产 一区精品| 香蕉精品网在线| 免费观看a级毛片全部| 香蕉精品网在线| 最黄视频免费看| 香蕉精品网在线| 久久精品国产自在天天线| 国产欧美日韩一区二区三区在线 | 好男人视频免费观看在线| h日本视频在线播放| 国产成人a∨麻豆精品| h日本视频在线播放| 美女内射精品一级片tv| 亚洲电影在线观看av| 亚洲av免费高清在线观看| 制服丝袜香蕉在线| 欧美xxxx性猛交bbbb| 这个男人来自地球电影免费观看 | 不卡视频在线观看欧美| 啦啦啦视频在线资源免费观看| 久久鲁丝午夜福利片| 久久精品久久精品一区二区三区| av有码第一页| 亚洲婷婷狠狠爱综合网| 精品熟女少妇av免费看| av女优亚洲男人天堂| 中文天堂在线官网| 国产精品一二三区在线看| 一区二区三区精品91| 亚洲成人一二三区av| 美女主播在线视频| av线在线观看网站| 亚洲自偷自拍三级| 久久毛片免费看一区二区三区| 久久午夜综合久久蜜桃| 国产欧美亚洲国产| 一级毛片我不卡| 久久人妻熟女aⅴ| 亚洲国产色片| 最新的欧美精品一区二区| 韩国av在线不卡| 日本av免费视频播放| 18禁动态无遮挡网站| 草草在线视频免费看| 日本91视频免费播放| 自拍欧美九色日韩亚洲蝌蚪91 | 亚州av有码| 99久久人妻综合| 少妇人妻 视频| 婷婷色av中文字幕| 亚洲精品自拍成人| 麻豆乱淫一区二区| 久久精品久久久久久噜噜老黄| 日日啪夜夜爽| 少妇的逼好多水| kizo精华| 久久国产亚洲av麻豆专区| 色94色欧美一区二区| 中文字幕精品免费在线观看视频 | 国产熟女欧美一区二区| 人妻少妇偷人精品九色| 黄片无遮挡物在线观看| 精品99又大又爽又粗少妇毛片| www.色视频.com| 精品久久久噜噜| 国国产精品蜜臀av免费| 精品人妻熟女毛片av久久网站| 久久6这里有精品| 欧美日韩一区二区视频在线观看视频在线| av不卡在线播放| 天天躁夜夜躁狠狠久久av| 久久99热6这里只有精品| av福利片在线| 久久久久久久亚洲中文字幕| 亚洲欧洲精品一区二区精品久久久 | 中文字幕久久专区| 18禁在线播放成人免费| 国产精品一区二区在线观看99| 高清欧美精品videossex| 交换朋友夫妻互换小说| 婷婷色av中文字幕| 女人精品久久久久毛片| 久久婷婷青草| 久久久久久久精品精品| 久久久久久久久久人人人人人人| 五月天丁香电影| 国产极品天堂在线| 九九爱精品视频在线观看| 亚州av有码| 国产又色又爽无遮挡免| 国产成人免费无遮挡视频| 免费观看在线日韩| 久久精品国产亚洲网站| 日韩伦理黄色片| tube8黄色片| 激情五月婷婷亚洲| 精品酒店卫生间| 国产成人a∨麻豆精品| 大陆偷拍与自拍| 国产精品久久久久成人av| 午夜福利网站1000一区二区三区| 免费黄色在线免费观看| 男的添女的下面高潮视频| 精品少妇久久久久久888优播| 不卡视频在线观看欧美| 美女内射精品一级片tv| 欧美xxⅹ黑人| 少妇熟女欧美另类| 亚洲熟女精品中文字幕| 老熟女久久久| av又黄又爽大尺度在线免费看| 日韩电影二区| 成人18禁高潮啪啪吃奶动态图 | 久久这里有精品视频免费| 狂野欧美激情性xxxx在线观看| 久久亚洲国产成人精品v| 亚洲精品久久午夜乱码| 老司机影院毛片| 国内精品宾馆在线| 日韩一本色道免费dvd| 国产精品一二三区在线看| 美女主播在线视频| 十八禁高潮呻吟视频 | a级一级毛片免费在线观看| 一级毛片久久久久久久久女| 看十八女毛片水多多多| 大香蕉97超碰在线| 男人舔奶头视频| 国产精品久久久久久精品古装| 久久精品久久久久久噜噜老黄| 新久久久久国产一级毛片| 亚洲av福利一区| 人妻 亚洲 视频| 中国国产av一级| 国产精品一区二区三区四区免费观看| 99九九在线精品视频 | 国产精品国产三级国产专区5o| 哪个播放器可以免费观看大片| 丝瓜视频免费看黄片| 国产亚洲欧美精品永久| 人妻一区二区av| 午夜福利视频精品| 日本-黄色视频高清免费观看| 麻豆成人午夜福利视频| av播播在线观看一区| 蜜桃久久精品国产亚洲av| 日韩三级伦理在线观看| 少妇的逼水好多| 在线观看美女被高潮喷水网站| 久久久久久久久久久免费av| 国产精品嫩草影院av在线观看| 日韩av不卡免费在线播放| 成人二区视频| 国产成人免费观看mmmm| 国产又色又爽无遮挡免| 日日摸夜夜添夜夜爱| 中文字幕人妻丝袜制服| 亚洲欧美日韩另类电影网站| 欧美bdsm另类| 免费黄频网站在线观看国产| 搡老乐熟女国产| 亚洲中文av在线| 国内精品宾馆在线| 免费高清在线观看视频在线观看| 久久久久久久久久久丰满| 久久久国产一区二区| 久久av网站| 好男人视频免费观看在线| 国产女主播在线喷水免费视频网站| 99热这里只有是精品在线观看| 精品一区二区免费观看| 精品一品国产午夜福利视频| 欧美日韩视频高清一区二区三区二| 老司机影院毛片| 丝袜脚勾引网站| av福利片在线| 亚洲第一av免费看| 久久影院123| 伦理电影大哥的女人| 久久久久精品性色| av免费观看日本| 新久久久久国产一级毛片| 多毛熟女@视频| 五月开心婷婷网| 简卡轻食公司| 最新中文字幕久久久久| 国产午夜精品一二区理论片| 能在线免费看毛片的网站| av在线观看视频网站免费| 国产高清三级在线| 午夜免费鲁丝| 伊人亚洲综合成人网| 国产深夜福利视频在线观看| a级毛片免费高清观看在线播放| 久久国产精品大桥未久av | 日韩制服骚丝袜av| 亚洲欧美成人精品一区二区| 夜夜骑夜夜射夜夜干| 亚洲精品日韩av片在线观看| 精品一品国产午夜福利视频| 美女内射精品一级片tv| 在线观看免费日韩欧美大片 | 亚洲av欧美aⅴ国产| 国产爽快片一区二区三区| 国产亚洲最大av| 你懂的网址亚洲精品在线观看| 免费看日本二区| 亚洲欧洲日产国产| 黄色日韩在线| 久久精品久久久久久久性| 欧美精品国产亚洲| 亚洲成色77777| 国产日韩欧美视频二区| 久久久久视频综合| 大香蕉久久网| 少妇 在线观看| 国产精品国产三级国产av玫瑰| 国产成人freesex在线| 人妻少妇偷人精品九色| 日日撸夜夜添| 国产一区二区三区综合在线观看 | 一本一本综合久久| 国产一区二区在线观看日韩| 人人妻人人看人人澡| 免费观看的影片在线观看| 欧美bdsm另类| 亚洲精品一二三| 在现免费观看毛片| 亚洲怡红院男人天堂| 人人妻人人爽人人添夜夜欢视频 | 插逼视频在线观看| 特大巨黑吊av在线直播| 国产视频首页在线观看| 欧美xxⅹ黑人| 黑人巨大精品欧美一区二区蜜桃 | 国产亚洲午夜精品一区二区久久| 成人亚洲欧美一区二区av| 免费看日本二区| av一本久久久久| 亚洲欧美一区二区三区黑人 | 色哟哟·www| 在线天堂最新版资源| 欧美成人精品欧美一级黄| 国产视频首页在线观看| 大话2 男鬼变身卡| 亚洲精品一区蜜桃|