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

    基于Storm的流媒體實(shí)時(shí)傳輸系統(tǒng)①

    2020-06-20 07:31:38翁小松
    關(guān)鍵詞:視頻流序列化集群

    翁小松,張 征

    (華中科技大學(xué) 人工智能與自動(dòng)化學(xué)院,武漢 430074)

    流媒體是指在網(wǎng)絡(luò)中使用流式傳輸技術(shù)進(jìn)行下載點(diǎn)播的連續(xù)時(shí)基媒體,采用邊下載邊播放的方式,緩解了網(wǎng)絡(luò)帶寬的壓力和節(jié)省了相對(duì)傳輸時(shí)間,因有著良好的時(shí)間效應(yīng)而被廣大用戶所采納.為了符合流媒體在數(shù)據(jù)傳輸過(guò)程中的穩(wěn)定性、時(shí)效性、可靠性等諸多要求,已有的流媒體傳輸系統(tǒng)分別采取了不同的技術(shù)和軟硬件手段,Fraz 和Malkani 通過(guò)部署高速專(zhuān)用嵌入式處理平臺(tái)(DSP),采用動(dòng)態(tài)RTP 數(shù)據(jù)打包技術(shù)提高實(shí)時(shí)視頻流系統(tǒng)的性能,滿足系統(tǒng)的高數(shù)據(jù)吞吐量,確保了更少的延遲和更好的流媒體質(zhì)量[1].還有基于各種傳輸協(xié)議如RTSP、MPEG-DASH 等,基于各種視頻壓縮技術(shù)如AVS、SVC 等,改良網(wǎng)絡(luò)帶寬自適應(yīng)和改良系統(tǒng)資源分配算法等的流媒體傳輸系統(tǒng)都在一定程度上實(shí)現(xiàn)了優(yōu)秀的視頻流傳輸性能.

    20世紀(jì)的90年代出現(xiàn)了流處理的概念,最早應(yīng)用于數(shù)據(jù)庫(kù)技術(shù)中,而分布式流處理系統(tǒng)由原有的分布式系統(tǒng)發(fā)展而來(lái),S4、Twitter Storm、Spark Streaming 等技術(shù)的發(fā)展克服了傳統(tǒng)流處理技術(shù)在數(shù)據(jù)傳輸和資源分配中的不足之處,由此分布式流處理技術(shù)取代了集中式流處理技術(shù)[2].Storm 技術(shù)開(kāi)源于2011年,其有著非常優(yōu)異的實(shí)時(shí)性、容錯(cuò)性、魯棒性、可擴(kuò)展性等特點(diǎn),被廣泛應(yīng)用于金融、交通、電子等服務(wù)行業(yè)和實(shí)時(shí)數(shù)據(jù)計(jì)算、實(shí)時(shí)推薦系統(tǒng)等.

    為了將Storm 在流處理中的優(yōu)異性能應(yīng)用到流媒體的傳輸中,本文將分析流媒體的視頻數(shù)據(jù)在實(shí)時(shí)傳輸中的難點(diǎn)和關(guān)鍵技術(shù),之后在Linux 上完成Storm框架的搭建,設(shè)計(jì)基于Storm 平臺(tái)的分布式計(jì)算系統(tǒng)和任務(wù)拓?fù)溆糜诹髅襟w視頻數(shù)據(jù)的實(shí)時(shí)傳輸,并部署Zookeeper 為框架提供高效可靠的分布式協(xié)調(diào)服務(wù),最后,框架通過(guò)了大規(guī)模流媒體數(shù)據(jù)的傳輸測(cè)試,為框架在實(shí)際生產(chǎn)生活中的應(yīng)用提供參考.

    1 需求分析和架構(gòu)設(shè)計(jì)

    本文的流媒體視頻數(shù)據(jù)傳輸系統(tǒng)采用大數(shù)據(jù)流式計(jì)算框架Storm 對(duì)視頻源數(shù)據(jù)進(jìn)行采集、切分、壓縮、推流,最后存儲(chǔ)到流媒體服務(wù)器中.本章是針對(duì)系統(tǒng)的需求分析,講述流媒體傳輸中的難點(diǎn)和關(guān)鍵技術(shù),設(shè)計(jì)整體系統(tǒng)架構(gòu)(如圖1所示)和各個(gè)部分的實(shí)現(xiàn)方法.

    1.1 流媒體大數(shù)據(jù)實(shí)時(shí)傳輸?shù)男枨蠓治?/h3>

    流媒體視頻數(shù)據(jù)的傳輸依賴(lài)于流媒體技術(shù),該技術(shù)與常規(guī)的視頻媒體技術(shù)之間最大的不同之處在于其可以使流媒體實(shí)現(xiàn)邊下載邊播放,兩者同時(shí)進(jìn)行的實(shí)時(shí)工作模式,是一種被廣泛應(yīng)用于視頻直播、遠(yuǎn)程教育、網(wǎng)絡(luò)電臺(tái)等的新技術(shù).

    實(shí)現(xiàn)流媒體視頻數(shù)據(jù)的傳輸主要有以下幾個(gè)難點(diǎn)和需要用到的關(guān)鍵技術(shù):

    (1)流媒體傳輸?shù)膶?shí)現(xiàn)需要專(zhuān)用的服務(wù)器、播放器和合適的傳輸協(xié)議,TCP 協(xié)議由于其過(guò)多的網(wǎng)絡(luò)開(kāi)銷(xiāo)不適用于流媒體技術(shù),所以采用HTTP/TCP 協(xié)議來(lái)傳輸系統(tǒng)的控制信息,用RTP/UDP 協(xié)議來(lái)傳輸實(shí)時(shí)的視頻數(shù)據(jù)[3].為了能夠把服務(wù)器的輸出重定向到客戶機(jī)的目的地址,需要使用上述兩種協(xié)議來(lái)與服務(wù)器建立聯(lián)系.

    (2)進(jìn)行流媒體傳輸?shù)囊曨l文件需要使用到視頻壓縮技術(shù),將其轉(zhuǎn)換成特定的視頻格式,通常格式的視頻文件的容量太大,在進(jìn)行網(wǎng)絡(luò)傳輸時(shí)需要占用過(guò)多的資源和花費(fèi)更長(zhǎng)的時(shí)間,而進(jìn)行壓縮后可以有效減少數(shù)字視頻傳輸所需的帶寬.由于壓縮技術(shù)是以消除冗余數(shù)據(jù)為原則,會(huì)影響到圖像質(zhì)量,所以需要在處理效率、磁盤(pán)空間、視頻質(zhì)量和所需的系統(tǒng)成本之間進(jìn)行權(quán)衡.在進(jìn)行格式轉(zhuǎn)換時(shí)需要注意在文件中添加“流”信息以便于進(jìn)行后續(xù)的視頻的合理切分.

    (3)流媒體視頻的傳輸需要使用緩存技術(shù).由于網(wǎng)絡(luò)是動(dòng)態(tài)波動(dòng)的,在視頻數(shù)據(jù)分段后每個(gè)分組最終所采用的路由是不同的,導(dǎo)致其到達(dá)客戶端所使用的的時(shí)間也不同,這時(shí)就需要使用緩存技術(shù)來(lái)保證分組后的數(shù)據(jù)的時(shí)序性,使得輸出做到連續(xù)性.

    (4)在Storm 框架內(nèi)傳遞的數(shù)據(jù)格式是結(jié)構(gòu)化的,不能直接處理非結(jié)構(gòu)化的視頻數(shù)據(jù)格式.本文實(shí)現(xiàn)一個(gè)特定的序列化封裝器,在Storm 平臺(tái)上對(duì)流媒體視頻源數(shù)據(jù)經(jīng)采集、切塊、分組后,用于對(duì)切分后的視頻片段進(jìn)行對(duì)象的序列化和在視頻推流階段的反序列化,使得視頻數(shù)據(jù)能在Storm 平臺(tái)上高效可靠的傳輸.

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

    1.2 系統(tǒng)整體架構(gòu)設(shè)計(jì)

    本文所搭建的流媒體視頻數(shù)據(jù)傳輸系統(tǒng)主要分為兩個(gè)部分:用于數(shù)據(jù)處理和傳輸?shù)腟torm 平臺(tái)、用于數(shù)據(jù)存儲(chǔ)和點(diǎn)播的流媒體服務(wù)器.

    在Storm 的核心代碼任務(wù)拓?fù)銽opology 的主方法入口main 函數(shù)中配置了流媒體的視頻源地址及推流地址,在將任務(wù)拓?fù)涮峤坏絊torm 集群環(huán)境中運(yùn)行后,由第一部分Storm 平臺(tái)負(fù)責(zé)流媒體視頻數(shù)據(jù)的接收、分片、壓縮和推流等工作,完成系統(tǒng)的核心處理功能部分.在Storm 的第一個(gè)Spout 模塊進(jìn)行源視頻的接收和分片,將處理之后的數(shù)據(jù)發(fā)送到之后的Bolt 模塊進(jìn)行視頻數(shù)據(jù)的壓縮和推送任務(wù),每個(gè)任務(wù)分別由一個(gè)Bolt 負(fù)責(zé),減少任務(wù)之間的耦合度.Storm 平臺(tái)上的各個(gè)模塊之間的協(xié)同工作是由其獨(dú)特的拓?fù)浣Y(jié)構(gòu)保證的,本文采用Storm 的默認(rèn)調(diào)度器來(lái)進(jìn)行任務(wù)的資源分配和負(fù)載均衡,提高系統(tǒng)的數(shù)據(jù)傳輸效率.

    流媒體服務(wù)器用于流媒體視頻數(shù)據(jù)在經(jīng)Storm 平臺(tái)推流后的緩存和提供客戶端播放器點(diǎn)播.系統(tǒng)采用開(kāi)源的Nginx 輕量級(jí)流媒體服務(wù)器,采用RTMP 協(xié)議進(jìn)行視頻數(shù)據(jù)的傳輸,提供視頻流的拉取和點(diǎn)播服務(wù),同時(shí)保證了高并發(fā)性和穩(wěn)定性的要求.同時(shí)在視頻服務(wù)器上集成了FFmpeg 多媒體視頻處理工具用于視頻信息的解析、推流等.

    流媒體視頻數(shù)據(jù)緩存到流媒體服務(wù)器上后,可以通過(guò)客戶端的播放器(VLC)進(jìn)行網(wǎng)絡(luò)串流,調(diào)用流媒體服務(wù)器的視頻存儲(chǔ)端口地址來(lái)進(jìn)行拉流和點(diǎn)播.

    2 系統(tǒng)搭建

    以Storm 框架作為流媒體視頻數(shù)據(jù)傳輸?shù)幕A(chǔ)并提供低延遲和高可靠性保證.本章將圍繞Storm 框架在Linux 服務(wù)器上的搭建流程展開(kāi).介紹Storm 框架搭建所需的包括硬件環(huán)境、軟件環(huán)境和框架的后臺(tái)環(huán)境配置,部署Zookeeper 提供高可用的協(xié)調(diào)解決方案,在框架搭建好后啟動(dòng)Storm 和提交任務(wù)拓?fù)?

    2.1 Storm 部署與框架搭建

    本文搭建的Storm 框架的硬件環(huán)境配置如下:

    華為彈性云服務(wù)器上搭建Ubuntu64 位系統(tǒng),并安裝可視化界面用于Storm 集群信息的查看需要,主節(jié)點(diǎn)雙核單處理器,4 GB 內(nèi)存,40 GB 硬盤(pán),副節(jié)點(diǎn)單核單處理器,2 GB 內(nèi)存,20 GB 硬盤(pán).

    Storm 所需的軟件開(kāi)發(fā)環(huán)境如下:

    操作系統(tǒng):Ubuntu 7.4.0-1Ubuntu1-18.04.1

    JDK 版本:JDK1.8.0_231

    Storm 版本:Storm2.0.0

    Zookeeper 版本:Zookeeper3.4.14

    Python 版本:Python2.7.2

    Zeromq 版本:Zeromq4.2.2

    Jzmq 版本:JJzmq2.1.0-SNAPSHOT

    Maven 版本:Apache-maven-2.5.5

    Maven 作為一個(gè)項(xiàng)目管理工具用于系統(tǒng)的項(xiàng)目代碼管理,包括依賴(lài)包源碼的下載編譯,程序的jar 打包,必要時(shí)還可以充當(dāng)bug 調(diào)試工具.

    在Storm 的所有Supervisor 節(jié)點(diǎn)中,需要部署Zookeeper 分布式應(yīng)用程序協(xié)調(diào)服務(wù)作為協(xié)調(diào)者,在集群運(yùn)行時(shí)發(fā)揮如下作用[4]:

    (1)Nimbus 和Supervisor 之間是沒(méi)有直接的信息傳遞的,Nimbus 在接收Storm 集群的任務(wù)拓?fù)浜?將任務(wù)信息寫(xiě)入Zookeeper 中,提供給Supervisor 從節(jié)點(diǎn)讀取這些任務(wù)的狀態(tài)信息,從而分配資源;

    (2)在Task 執(zhí)行失敗或Supervisor 節(jié)點(diǎn)宕機(jī)時(shí),Zookeeper 可以獲得失敗信息,使得Nimbus 主節(jié)點(diǎn)可以根據(jù)心跳信息來(lái)重啟失敗的Task 或Supervisor.

    2.2 Storm 啟動(dòng)和任務(wù)提交

    Storm 的啟動(dòng)依賴(lài)于JDK 環(huán)境,Zookeeper 的部署是必要的,便于監(jiān)控整個(gè)Storm 集群的狀態(tài)信息.Zookeeper 的部署需要使用Maven 進(jìn)行編譯,本文所采用的的Zookeeper3.4.14 版本是編譯好的版本,所以省略這一步驟.在Storm 框架及其所需的一系列軟件開(kāi)發(fā)環(huán)境搭建完畢后,可以啟動(dòng)Storm 服務(wù),需要先運(yùn)行Zookeeper 服務(wù),首先進(jìn)入Zookeeper 的安裝目錄下,執(zhí)行如下命令:bin/zkServer.sh start,啟動(dòng)服務(wù)后可以運(yùn)行bin/zkServer.sh status 命令查看Zookeeper 的運(yùn)行狀態(tài).Zookeeper 成功運(yùn)行后,進(jìn)入Storm 的bin 目錄下,運(yùn)行下列命令完成Storm 框架的啟動(dòng):

    ./storm nimbus &

    ./storm ui &

    ./storm supervisor &

    ./storm logviewer &

    ./storm drpc &

    在這些命令中,Nimbus 主節(jié)點(diǎn)的啟動(dòng)應(yīng)優(yōu)先于Supervisor 副節(jié)點(diǎn),防止集群信息報(bào)錯(cuò),UI 和Logviewer服務(wù)的啟動(dòng)順序沒(méi)有要求,DRPC 用于分布式遠(yuǎn)程調(diào)用Storm 集群的計(jì)算資源,而省略連接集群中的具體節(jié)點(diǎn)的過(guò)程,該項(xiàng)服務(wù)和Logviewer 都是可選項(xiàng),只有在具體任務(wù)需要時(shí)才會(huì)發(fā)揮作用.

    打開(kāi)瀏覽器,進(jìn)入localhost:8080 查看WebUI 界面(如圖2所示),驗(yàn)證Storm 是否啟動(dòng)成功(所有Storm 的進(jìn)程必須在后臺(tái)運(yùn)行,否則會(huì)占用終端控制臺(tái)).Storm 框架的各個(gè)組件的運(yùn)行情況.

    圖2 Storm 的WebUI 圖

    在WebUI 圖中,第一欄顯示的是Storm 的版本信息、Supervisor 啟動(dòng)個(gè)數(shù)、已使用和未使用的端口數(shù)量及端口總數(shù)、程序中所定義的Executors (線程數(shù))和Tasks (任務(wù)數(shù)).WebUI 圖中還包括Nimbus 主節(jié)點(diǎn)所在的服務(wù)器信息,集群上所運(yùn)行的Topology (任務(wù)拓?fù)?的相關(guān)信息、Supervisor 從節(jié)點(diǎn)的服務(wù)器信息以及集群的配置信息等,每一類(lèi)信息都提供了查看更深層次細(xì)化信息的接口按鈕.

    Storm 任務(wù)提交和執(zhí)行過(guò)程示意圖如圖3所示.

    Storm 的整體工作流程可以簡(jiǎn)化為以下步驟:客戶端新建Topology,在其中定義Spout 和Bolt 的初始并發(fā)度,即初始的Executors 個(gè)數(shù),并定義各個(gè)組件之間的流分組策略,之后Client 提交Topology 到Nimbus中;Nimbus 分配任務(wù),根據(jù)Topology 定義中給定的參數(shù),下載對(duì)應(yīng)的依賴(lài)包的源代碼數(shù)據(jù),并將分配好的任務(wù)提交到Zookeeper 上;子節(jié)點(diǎn)Supervisor 會(huì)通過(guò)定期查詢(xún)Zookeeper 中的信息,分配具體的Worker 以及Executors 執(zhí)行具體的Tasks[5].

    圖3 Storm 任務(wù)提交和執(zhí)行過(guò)程示意圖

    Storm 的Topology 拓?fù)淙蝿?wù)可以通過(guò)Maven 編譯打包成jar,相關(guān)的配置信息都集中在pom.xml 文件中,包括各個(gè)依賴(lài)包資源及其版本號(hào)等,在pom.xml 文件所在目錄下運(yùn)行mvn package assembly:single 命令可以在編譯測(cè)試后創(chuàng)建Target 目錄并生成一個(gè)xxxjar-with-dependencies.jar 文件,這個(gè)文件中包含了Storm集群環(huán)境運(yùn)行所需的依賴(lài)資源和工程源代碼[6].在打包完成后,運(yùn)行如下命令:

    storm jar /home/song/storm/xxx.jar cn.storm.topology.WordCountTopology

    其中,/home/song/storm/xxx.jar 是程序?qū)崿F(xiàn)代碼經(jīng)Maven 命令編譯打包成的包含依賴(lài)包資源在內(nèi)的jar 文件及其所在的相對(duì)于終端位置所在的文件路徑,cn.storm.topology.WordCountTopology 是程序的主方法入口,如果測(cè)試程序要在集群上運(yùn)行,需要在命令后面追加任務(wù)的名字,否則會(huì)在本地模擬模式下運(yùn)行.

    2.3 流媒體服務(wù)器搭建

    在流媒體視頻流數(shù)據(jù)經(jīng)過(guò)Storm 平臺(tái)的處理到達(dá)推送步驟后,需要流媒體服務(wù)器進(jìn)行視頻流的接收和分發(fā).本文搭建的RTMP 流媒體服務(wù)器是基于Nginx開(kāi)源項(xiàng)目的輕量級(jí)流媒體服務(wù)器,作為流媒體視頻數(shù)據(jù)的存儲(chǔ)服務(wù)器,同時(shí)提供第三方客戶端使用播放器進(jìn)行視頻的網(wǎng)絡(luò)串流點(diǎn)播[7].

    Nginx 的搭建流程如下:

    (1)安裝GCC 和相關(guān)C++工具;

    (2)安裝依賴(lài)庫(kù)libpcre3,libpcre3-dev;

    (3)安裝libssl-dev 和OpenSSL 工具;

    (4)解壓后的Nginx 重新編譯和安裝.

    如果Nginx 編譯成功,在/etc/nginx 目錄下修改配置文件nginx.conf,添加RTMP 的推流端口live,然后在/usr/local/nginx/sbin 目錄下啟動(dòng)Nginx 的主程序,啟動(dòng)后可以在瀏覽器中打開(kāi)localhost 的特定端口查看啟動(dòng)情況以及服務(wù)器的相關(guān)信息.

    FFmpeg 是一個(gè)音視頻軟編解碼和RTMP 流發(fā)送接收的完整解決方案,本系統(tǒng)的視頻數(shù)據(jù)采用H.264進(jìn)行編解碼,使用FFmpeg 命令執(zhí)行視頻流的拉流轉(zhuǎn)推任務(wù),完成對(duì)視頻數(shù)據(jù)的相關(guān)處理操作.

    3 系統(tǒng)測(cè)試

    在Storm 框架搭建完畢后,編寫(xiě)Topology 拓?fù)淙蝿?wù)用于視頻數(shù)據(jù)的接收、分片、壓縮、推流,并提交Storm 集群執(zhí)行,進(jìn)行流媒體大數(shù)據(jù)的傳輸測(cè)試,使其滿足流媒體對(duì)于數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性、高容錯(cuò)性、數(shù)據(jù)完整性的要求.

    3.1 拓?fù)淙蝿?wù)設(shè)計(jì)

    針對(duì)在Storm 平臺(tái)上傳輸?shù)牧髅襟w視頻流需要選擇一個(gè)合理的切塊分組方案,能夠方便后續(xù)的連續(xù)化處理和壓縮推流等操作.視頻切分的依據(jù)是視頻編碼時(shí)的關(guān)鍵幀信息,流媒體視頻數(shù)據(jù)中主要包括3 種類(lèi)型的編碼幀信息:I 幀(關(guān)鍵幀)、B 幀和P 幀[8].

    系統(tǒng)采用GOP (2 個(gè)關(guān)鍵幀之間的間隔)作為視頻流數(shù)據(jù)切分的基本單位,通過(guò)對(duì)前一個(gè)GOP 的冗余片段進(jìn)行切分,將切分后的視頻片段順序發(fā)送到Storm中,以此形成連續(xù)化的視頻組數(shù)據(jù)流[9].

    序列化是流媒體視頻數(shù)據(jù)在Storm 平臺(tái)上傳輸?shù)年P(guān)鍵步驟,它將非結(jié)構(gòu)化的視頻格式對(duì)象轉(zhuǎn)換為結(jié)構(gòu)化的數(shù)據(jù)類(lèi)型,使得視頻數(shù)據(jù)可以在網(wǎng)絡(luò)中進(jìn)行傳遞,之后在系統(tǒng)的推流階段對(duì)數(shù)據(jù)進(jìn)行反序列化,將視頻數(shù)據(jù)的類(lèi)型還原,完成數(shù)據(jù)的傳輸過(guò)程.在Storm 框架中,集成了Kyro 序列化技術(shù),Kyro 序列化處理后的數(shù)據(jù)占用更少的內(nèi)存,比通用的Java 序列化的效率更高,耗時(shí)更少[10].本文在Kryo 序列化的基礎(chǔ)上編寫(xiě)了更加適用于系統(tǒng)的新序列化器,便于視頻數(shù)據(jù)在Storm 平臺(tái)上的傳遞.

    傳統(tǒng)的視頻格式如rmvb、mkv 等占用的容量太大,不利于視頻數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸,所以需要在傳輸前進(jìn)行格式的壓縮.對(duì)于流媒體視頻數(shù)據(jù)的壓縮來(lái)講,影響視頻最終性能的因素有很多,主要是壓縮效率和速率調(diào)節(jié)方面,本文在對(duì)視頻數(shù)據(jù)進(jìn)行壓縮階段采用H.264 視頻編碼算法,擁有更節(jié)約的碼率、更高質(zhì)量的視頻畫(huà)面和更強(qiáng)的網(wǎng)絡(luò)適應(yīng)性,并提供了差錯(cuò)恢復(fù)能力.視頻流切分流程圖如圖4所示.

    圖4 視頻流切分流程圖[9]

    WorkFrames 封裝類(lèi)型用于對(duì)Storm 接收的視頻源經(jīng)過(guò)切分后的數(shù)據(jù)片段實(shí)例化.Storm 平臺(tái)在讀取了流媒體視頻流分段數(shù)據(jù)后,無(wú)法直接使其在系統(tǒng)中進(jìn)行信息的傳遞,自定義的WorkFrames 數(shù)據(jù)結(jié)構(gòu)和序列化器WorkFramesSerializer 如圖5所示,用于對(duì)視頻數(shù)據(jù)進(jìn)行分組轉(zhuǎn)換和序列化操作,使其能進(jìn)行實(shí)時(shí)流傳遞,其中的sequenceId 表示Spout 采集到的視頻數(shù)據(jù)片段的序號(hào),而streamId 表示在Storm 平臺(tái)上傳遞的視頻流編號(hào),getTuple 方法用于獲取Bolt 中的視頻數(shù)據(jù),metadata 中的Object 對(duì)象存儲(chǔ)了實(shí)際序列化后的流媒體視頻數(shù)據(jù).WorkFramesSerializer 序列化器中的write 方法序列化視頻數(shù)據(jù),而read 方法則是反序列化方法,fromTuple 方法和toTuple 方法用于write 序列化和read 序列化的抽象封裝,傳遞Storm 中的數(shù)據(jù)單元.

    圖5 對(duì)象封裝類(lèi)和序列化器封裝類(lèi)

    在系統(tǒng)的實(shí)時(shí)傳輸作業(yè)中,Spout 數(shù)據(jù)采集器模塊負(fù)責(zé)讀取RTMP 協(xié)議的視頻流,并對(duì)視頻數(shù)據(jù)文件進(jìn)行切分,序列化切分后的視頻片段,使其能在Storm 平臺(tái)上進(jìn)行數(shù)據(jù)傳遞,然后將數(shù)據(jù)發(fā)送給拓?fù)渲械南乱粋€(gè)組件.Bolt 組件在接收到Spout 的數(shù)據(jù)信息后對(duì)其進(jìn)行并行壓縮操作,最后將反序列化后的視頻數(shù)據(jù)推流到流媒體服務(wù)器中(由2 個(gè)Bolt 分別處理,減少邏輯之間的耦合),提供播放器的拉流點(diǎn)播.

    新建VideoChannelTopology 作為整個(gè)拓?fù)涞闹黝?lèi),在主方法入口main 函數(shù)中添加流媒體視頻源地址信息、Storm 集群配置信息、Spout 和Bolt 各組件模塊的創(chuàng)建信息和數(shù)據(jù)分組模式等.具體拓?fù)鋱D如圖6.

    圖6 視頻實(shí)時(shí)傳輸拓?fù)鋱D

    GatherSpout 是整個(gè)拓?fù)淙蝿?wù)的數(shù)據(jù)采集模塊,負(fù)責(zé)對(duì)流媒體視頻流數(shù)據(jù)的采集,并完成對(duì)視頻文件的切塊和分組操作,之后調(diào)用基于kyro 的自定義序列化器WorkFramesSerializer 對(duì)封裝后的WorkFrames 視頻對(duì)象進(jìn)行序列化,將序列化后的數(shù)據(jù)單元tuple 并發(fā)的發(fā)送到下游的多個(gè)CompressBolt 中.

    系統(tǒng)的Storm 平臺(tái)上一共運(yùn)行2 種類(lèi)型的Bolt 組件:CompressBolt 和PushingBolt,上游的CompressBolt采用并發(fā)方式運(yùn)行,接收從采集器Spout 組件傳來(lái)的數(shù)據(jù),調(diào)用自定義序列化器的反序列化方法得到具體的視頻數(shù)據(jù),然后對(duì)視頻分段數(shù)據(jù)采用H.264 編碼算法進(jìn)行壓縮操作,完成后賦值到新的對(duì)象output 中,進(jìn)行二次序列化成value 類(lèi)型,調(diào)用tuple 的emit 方法傳遞數(shù)據(jù)到一個(gè)下游PushingBolt 中,同時(shí)進(jìn)行ack 應(yīng)答,保證數(shù)據(jù)的可靠性.下游的PushingBolt 則負(fù)責(zé)進(jìn)行處理后的視頻數(shù)據(jù)的推送,使其保存到流媒體服務(wù)器上,由于要保證視頻片段分組順序的正確性,采用滑動(dòng)窗口模式來(lái)避免在傳輸過(guò)程中的延遲問(wèn)題,對(duì)視頻片段數(shù)據(jù)采用緩存處理,保證推送視頻服務(wù)的穩(wěn)定性和連續(xù)性[11].

    流媒體服務(wù)器上存儲(chǔ)的視頻文件可以通過(guò)流媒體播放器(VLC 等)進(jìn)行網(wǎng)絡(luò)串流,采用RTMP 實(shí)時(shí)消息傳輸協(xié)議,通過(guò)配置流媒體服務(wù)器的地址IP 和對(duì)應(yīng)的端口號(hào)打開(kāi)遠(yuǎn)程鏈接,拉取視頻數(shù)據(jù)并播放.

    3.2 性能測(cè)試

    在項(xiàng)目的程序代碼編寫(xiě)完畢后,通過(guò)Maven 命令打包成jar 在測(cè)試通過(guò)后提交到服務(wù)器的Storm 集群執(zhí)行.Storm 的Topology 拓?fù)溥\(yùn)行細(xì)節(jié)如圖7所示.

    圖7 拓?fù)溥\(yùn)行圖

    通過(guò)在系統(tǒng)集群的UI 中進(jìn)行數(shù)據(jù)量的定量統(tǒng)計(jì)和實(shí)時(shí)性分析,主要集中在整體拓?fù)湫阅芎图褐蟹纸M件傳輸效率,表1為截取10 min、30 min、1 h 的數(shù)據(jù)分析圖,整理后得出該集群在傳輸效應(yīng)方面的數(shù)據(jù)表.

    表1 拓?fù)浣y(tǒng)計(jì)信息表

    在拓?fù)湫畔⒔y(tǒng)計(jì)表中,emitted 表示窗口發(fā)射出去的元組總數(shù),即輸出收集器上調(diào)用emit 方法的次數(shù),transferred 則表示基于時(shí)間窗口所有發(fā)送至任務(wù)的元組數(shù)量,元組發(fā)送到流上可能沒(méi)有組件立即訂閱讀取,這會(huì)使得其數(shù)量少于發(fā)射的數(shù)量.

    在Spout 的信息統(tǒng)計(jì)表(表2)中,emitted 表示該組件上已發(fā)射元組數(shù)量,transferred 表示發(fā)送至其他任務(wù)上的元組數(shù)量,acked 表示應(yīng)答的元組數(shù),在任務(wù)設(shè)計(jì)時(shí)Spout 作為消息收集器不作消息應(yīng)答,所以該項(xiàng)數(shù)值始終為0,failed 表示失敗的元組數(shù)量.

    表2 gatherSpout 統(tǒng)計(jì)信息表

    在Bolt 的信息統(tǒng)計(jì)表(表3、表4)中,emitted 和transferred 分別表示該Bolt 上發(fā)射的元組數(shù)量和實(shí)際傳輸元組數(shù)量,由于pushingBolt 作為拓?fù)渲械淖詈笠粋€(gè)節(jié)點(diǎn),不需要再將消息發(fā)送給下一個(gè)組件,所以其transferred 的值始終為0,executed 表示該Bolt 上處理的元組數(shù)量,acked 表示應(yīng)答的元組數(shù)量,兩者數(shù)量相等表示消息的可靠性高,failed 表示失敗的元組數(shù)量.

    表3 CompressBolt 統(tǒng)計(jì)信息表

    表4 PushingBolt 統(tǒng)計(jì)信息表

    通過(guò)折線圖(圖8~圖10)可以看出,系統(tǒng)在運(yùn)行過(guò)程中的數(shù)據(jù)處理能力相對(duì)平穩(wěn),在3 個(gè)時(shí)間點(diǎn)的信息處理量基本符合等比增長(zhǎng)規(guī)律,單位時(shí)間的系統(tǒng)性能沒(méi)有遭遇瓶頸.在集群的數(shù)據(jù)吞吐量方面,在綜合考慮帶寬因素影響的前提下,基本滿足視頻數(shù)據(jù)的傳輸需要.在實(shí)時(shí)性和可靠性方面,通過(guò)幾個(gè)折線圖的橫向?qū)Ρ?消息在流中傳輸時(shí),經(jīng)過(guò)處理后由acked 進(jìn)行應(yīng)答,兩者比例接近100%,說(shuō)明消息的每次處理都收到了系統(tǒng)的反饋,沒(méi)有出現(xiàn)失敗的消息元組.

    本文還進(jìn)行了系統(tǒng)的數(shù)據(jù)傳輸量測(cè)試,針對(duì)的是Worker 并發(fā)數(shù)的變化所引起的對(duì)視頻處理性能的影響.具體的測(cè)試方法是在Storm 平臺(tái)的視頻壓縮處理模塊進(jìn)行多路視頻流的并發(fā)傳輸任務(wù),測(cè)試時(shí)在拓?fù)淙蝿?wù)的主方法中配置組件信息,采集器Spout 設(shè)置為8 個(gè),由8 個(gè)Acker 來(lái)保障數(shù)據(jù)傳輸?shù)目煽啃?避免消息應(yīng)答失敗導(dǎo)致的數(shù)據(jù)錯(cuò)誤,每個(gè)消息的大小限定為100 KB,設(shè)置24 個(gè)CompressBolt 用于視頻流數(shù)據(jù)的壓縮任務(wù).在集群上設(shè)置了多個(gè)10 s 時(shí)間段的消息記錄器,具體任務(wù)測(cè)試時(shí)設(shè)置不同數(shù)量的Workers 任務(wù)并發(fā)度,統(tǒng)計(jì)集群在每10 s 所處理的Tuple 數(shù)量,繪制出不同Workers 并發(fā)數(shù)下的Tuple 處理量的折線圖(圖11),以此直觀的表現(xiàn)系統(tǒng)的集群性能變化情況.

    圖8 拓?fù)湫畔⒔y(tǒng)計(jì)折線圖

    圖9 Spout 信息統(tǒng)計(jì)折線圖

    圖10 Bolt 信息統(tǒng)計(jì)折線圖

    對(duì)于視頻作業(yè)任務(wù)而言,每增加一個(gè)Worker 數(shù),會(huì)增加同時(shí)間段內(nèi)系統(tǒng)的數(shù)據(jù)處理數(shù)和系統(tǒng)平臺(tái)的線程處理量,如Netty 收發(fā)線程和心跳線程,同時(shí)會(huì)使得原來(lái)在線程間內(nèi)存通信的組件變成網(wǎng)絡(luò)通信,降低了系統(tǒng)的吞吐量[12].Workers 進(jìn)程數(shù)量的增加不會(huì)造成系統(tǒng)傳輸效率的無(wú)限增長(zhǎng),在Workers 過(guò)大時(shí)反而會(huì)因信息阻塞造成系統(tǒng)性能的下降.經(jīng)測(cè)試發(fā)現(xiàn),在8 個(gè)Workers 并發(fā)度的影響下,系統(tǒng)的傳輸效率達(dá)到了最大化.影響系統(tǒng)傳輸性能的因素還有很多:服務(wù)器的硬件條件,Storm 集群的任務(wù)調(diào)度算法,拓?fù)淙蝿?wù)的消息復(fù)雜度等,其對(duì)系統(tǒng)的影響并不都是線性和正相關(guān)的,這有待于后續(xù)更深入的研究.

    圖11 不同Workers 數(shù)對(duì)系統(tǒng)性能的影響

    4 結(jié)語(yǔ)

    流媒體的實(shí)時(shí)可靠傳輸是當(dāng)今網(wǎng)絡(luò)技術(shù)實(shí)踐中一個(gè)重要的研究?jī)?nèi)容,被廣泛應(yīng)用于各種視頻資源網(wǎng)站的點(diǎn)播和視頻直播中.Storm 作為一個(gè)免費(fèi)開(kāi)源的分布式實(shí)時(shí)計(jì)算框架,設(shè)計(jì)用于在容錯(cuò)和水平可擴(kuò)展方法中處理大量數(shù)據(jù),利用Storm 可以很容易做到可靠地處理無(wú)限的數(shù)據(jù)流,很好地滿足了大數(shù)據(jù)在容量不斷膨脹擴(kuò)大,又對(duì)實(shí)時(shí)性有著高要求的現(xiàn)狀[13].本文分析了流媒體視頻數(shù)據(jù)傳輸?shù)脑砗托枰鉀Q的問(wèn)題難點(diǎn)及所需的關(guān)鍵性技術(shù),設(shè)計(jì)并實(shí)現(xiàn)了基于Storm 的流媒體視頻數(shù)據(jù)傳輸系統(tǒng).之后在云服務(wù)器的Linux 系統(tǒng)中搭建了Storm 集群,并部署了Zookeeper 分布式協(xié)調(diào)服務(wù).在Storm 框架搭建成功后,編寫(xiě)任務(wù)拓?fù)鋵?shí)現(xiàn)視頻的接收、分片、壓縮和推流,搭建流媒體服務(wù)器用于流媒體視頻數(shù)據(jù)經(jīng)Storm 平臺(tái)推流后的存儲(chǔ)和客戶端播放器的拉取點(diǎn)播,之后進(jìn)行了流媒體視頻大數(shù)據(jù)的傳輸測(cè)試,保證了Storm 框架能完成大數(shù)據(jù)的實(shí)時(shí)可靠、高并發(fā)量的傳輸.

    猜你喜歡
    視頻流序列化集群
    邊緣實(shí)時(shí)視頻流分析系統(tǒng)配置動(dòng)態(tài)調(diào)整算法研究
    基于視頻流傳輸中的擁塞控制研究
    如何建構(gòu)序列化閱讀教學(xué)
    甘肅教育(2020年14期)2020-09-11 07:58:36
    海上小型無(wú)人機(jī)集群的反制裝備需求與應(yīng)對(duì)之策研究
    一種無(wú)人機(jī)集群發(fā)射回收裝置的控制系統(tǒng)設(shè)計(jì)
    電子制作(2018年11期)2018-08-04 03:25:40
    Python與Spark集群在收費(fèi)數(shù)據(jù)分析中的應(yīng)用
    勤快又呆萌的集群機(jī)器人
    美國(guó)視頻流市場(chǎng)首現(xiàn)飽和征兆
    Java 反序列化漏洞研究
    作文訓(xùn)練微格化、序列化初探
    videos熟女内射| 亚洲中文字幕日韩| 久久精品人人爽人人爽视色| 丝瓜视频免费看黄片| 久久热在线av| 久久精品91无色码中文字幕| 日韩欧美一区二区三区在线观看 | 色播在线永久视频| 国产成人一区二区三区免费视频网站| 亚洲九九香蕉| 日韩欧美一区视频在线观看| 制服人妻中文乱码| 波多野结衣一区麻豆| 中国美女看黄片| 国产男靠女视频免费网站| 国产精品亚洲av一区麻豆| 精品久久久久久久毛片微露脸| 午夜福利,免费看| 国产不卡av网站在线观看| 国产精品影院久久| 国产精品99久久99久久久不卡| 色婷婷久久久亚洲欧美| 曰老女人黄片| 国产精品1区2区在线观看. | 国产在视频线精品| 精品电影一区二区在线| 一本大道久久a久久精品| 美国免费a级毛片| 黄片播放在线免费| 亚洲avbb在线观看| 啦啦啦 在线观看视频| 婷婷精品国产亚洲av在线 | 精品国产一区二区三区四区第35| 一区二区三区激情视频| 久热爱精品视频在线9| 欧美日韩av久久| 超碰成人久久| 亚洲成人手机| 精品国内亚洲2022精品成人 | 精品一区二区三区av网在线观看| 亚洲成国产人片在线观看| 亚洲人成伊人成综合网2020| 中文字幕人妻熟女乱码| 国产无遮挡羞羞视频在线观看| 人妻丰满熟妇av一区二区三区 | 国产99久久九九免费精品| 久久午夜亚洲精品久久| 日韩欧美一区二区三区在线观看 | 欧美午夜高清在线| 国产在线一区二区三区精| 两性午夜刺激爽爽歪歪视频在线观看 | 国产亚洲欧美在线一区二区| 999久久久国产精品视频| 女人高潮潮喷娇喘18禁视频| 女性被躁到高潮视频| 国产精品成人在线| 欧美黄色片欧美黄色片| 搡老岳熟女国产| 久久久国产欧美日韩av| 免费黄频网站在线观看国产| 香蕉久久夜色| 少妇的丰满在线观看| 亚洲精品粉嫩美女一区| 少妇被粗大的猛进出69影院| 99热只有精品国产| 丰满的人妻完整版| 91成人精品电影| 亚洲少妇的诱惑av| 国产亚洲精品第一综合不卡| videos熟女内射| 女人被躁到高潮嗷嗷叫费观| 国产aⅴ精品一区二区三区波| 亚洲五月婷婷丁香| 十八禁人妻一区二区| 久久午夜亚洲精品久久| tocl精华| 捣出白浆h1v1| 亚洲第一av免费看| 91成人精品电影| 777久久人妻少妇嫩草av网站| 亚洲五月色婷婷综合| 欧美亚洲日本最大视频资源| 亚洲成人免费av在线播放| 午夜免费成人在线视频| 精品亚洲成国产av| 日韩精品免费视频一区二区三区| 少妇被粗大的猛进出69影院| 深夜精品福利| 亚洲av美国av| 大型黄色视频在线免费观看| 亚洲精品中文字幕在线视频| 午夜福利欧美成人| 午夜福利,免费看| 久久国产精品大桥未久av| 国产成人精品久久二区二区91| 91av网站免费观看| 亚洲午夜精品一区,二区,三区| 女人被狂操c到高潮| 欧美久久黑人一区二区| 久久 成人 亚洲| 女人爽到高潮嗷嗷叫在线视频| 久久香蕉精品热| 在线观看一区二区三区激情| 久热爱精品视频在线9| 中文字幕人妻熟女乱码| 国内毛片毛片毛片毛片毛片| 欧美日本中文国产一区发布| 一本一本久久a久久精品综合妖精| 午夜免费鲁丝| 免费不卡黄色视频| av天堂在线播放| 精品国产超薄肉色丝袜足j| 我的亚洲天堂| 亚洲欧洲精品一区二区精品久久久| 高清av免费在线| 国产成人欧美在线观看 | 啦啦啦视频在线资源免费观看| 丰满迷人的少妇在线观看| 大码成人一级视频| 日本一区二区免费在线视频| 一区二区三区精品91| 欧美精品人与动牲交sv欧美| 99久久国产精品久久久| 久久久久久久久免费视频了| 国产精品欧美亚洲77777| 最近最新中文字幕大全免费视频| 午夜精品在线福利| 午夜成年电影在线免费观看| 国产成人免费无遮挡视频| 757午夜福利合集在线观看| xxx96com| 麻豆av在线久日| 欧美色视频一区免费| 亚洲欧洲精品一区二区精品久久久| 久久国产精品人妻蜜桃| xxx96com| 久久精品亚洲精品国产色婷小说| 精品一区二区三区视频在线观看免费 | 久久久久精品国产欧美久久久| 国产精品99久久99久久久不卡| 亚洲精品久久成人aⅴ小说| 国产成人精品无人区| 欧美另类亚洲清纯唯美| 最新美女视频免费是黄的| 999久久久精品免费观看国产| 天堂√8在线中文| 欧美人与性动交α欧美精品济南到| 精品一区二区三区av网在线观看| 黄色成人免费大全| 午夜免费成人在线视频| 大陆偷拍与自拍| 老司机午夜福利在线观看视频| 国产成+人综合+亚洲专区| 色在线成人网| 午夜免费观看网址| 男女之事视频高清在线观看| 99精国产麻豆久久婷婷| 午夜福利在线免费观看网站| 免费观看人在逋| 大香蕉久久成人网| 成熟少妇高潮喷水视频| av电影中文网址| 国产不卡一卡二| 天天操日日干夜夜撸| 91麻豆av在线| 欧美精品av麻豆av| 国产精品乱码一区二三区的特点 | 黑人欧美特级aaaaaa片| 国产亚洲av高清不卡| 日韩欧美三级三区| 香蕉国产在线看| 91精品国产国语对白视频| 日本五十路高清| 国产一区二区激情短视频| 嫁个100分男人电影在线观看| 国产精品美女特级片免费视频播放器 | 成人国语在线视频| 精品久久蜜臀av无| 一边摸一边抽搐一进一小说 | 91成人精品电影| 国产又色又爽无遮挡免费看| 99热只有精品国产| 亚洲精华国产精华精| 最新在线观看一区二区三区| 中出人妻视频一区二区| aaaaa片日本免费| 最新美女视频免费是黄的| 欧美人与性动交α欧美软件| 久久婷婷成人综合色麻豆| 大型黄色视频在线免费观看| 丁香欧美五月| 久久久久精品人妻al黑| 69av精品久久久久久| 亚洲av第一区精品v没综合| 午夜老司机福利片| 欧美日韩亚洲国产一区二区在线观看 | 黑人猛操日本美女一级片| 久久 成人 亚洲| 一级黄色大片毛片| 久久国产精品男人的天堂亚洲| 精品亚洲成国产av| 大片电影免费在线观看免费| 国产精品久久久久成人av| 搡老岳熟女国产| 亚洲国产欧美一区二区综合| 制服人妻中文乱码| 国产精品久久久久久精品古装| 成人亚洲精品一区在线观看| av片东京热男人的天堂| 欧美 亚洲 国产 日韩一| 国产精品久久久av美女十八| 日韩欧美免费精品| 热99re8久久精品国产| 两人在一起打扑克的视频| 久久午夜综合久久蜜桃| 亚洲中文日韩欧美视频| 亚洲第一青青草原| 无遮挡黄片免费观看| 国产精品自产拍在线观看55亚洲 | 色婷婷久久久亚洲欧美| 亚洲国产精品sss在线观看 | 国产蜜桃级精品一区二区三区 | 老司机深夜福利视频在线观看| 欧美+亚洲+日韩+国产| 亚洲少妇的诱惑av| 亚洲五月色婷婷综合| 亚洲第一av免费看| 99精国产麻豆久久婷婷| 女人精品久久久久毛片| netflix在线观看网站| 高清av免费在线| 少妇的丰满在线观看| 午夜免费鲁丝| 亚洲欧美精品综合一区二区三区| 婷婷精品国产亚洲av在线 | xxx96com| 亚洲av成人不卡在线观看播放网| 久久人妻福利社区极品人妻图片| 两性夫妻黄色片| 最新美女视频免费是黄的| 黑人巨大精品欧美一区二区蜜桃| 深夜精品福利| e午夜精品久久久久久久| 欧美精品啪啪一区二区三区| 亚洲少妇的诱惑av| 自线自在国产av| 亚洲第一av免费看| 高清视频免费观看一区二区| 久久香蕉精品热| 久久久久视频综合| 亚洲自偷自拍图片 自拍| 国产乱人伦免费视频| 精品国产一区二区三区四区第35| 免费高清在线观看日韩| 成人亚洲精品一区在线观看| 中文字幕另类日韩欧美亚洲嫩草| 色尼玛亚洲综合影院| 国产精品98久久久久久宅男小说| 99re在线观看精品视频| 一边摸一边抽搐一进一小说 | 男人舔女人的私密视频| 国产精品.久久久| 国产麻豆69| www.熟女人妻精品国产| 在线观看66精品国产| 热99久久久久精品小说推荐| 深夜精品福利| 高清黄色对白视频在线免费看| 亚洲一区高清亚洲精品| 一区二区三区精品91| 日韩免费av在线播放| 妹子高潮喷水视频| 18禁国产床啪视频网站| 国产精品秋霞免费鲁丝片| 精品卡一卡二卡四卡免费| 12—13女人毛片做爰片一| 宅男免费午夜| 国产av又大| 国产成人啪精品午夜网站| 夫妻午夜视频| 国产精品99久久99久久久不卡| 建设人人有责人人尽责人人享有的| 99热只有精品国产| 久久人妻熟女aⅴ| 每晚都被弄得嗷嗷叫到高潮| 美女扒开内裤让男人捅视频| 99国产精品99久久久久| 国精品久久久久久国模美| 飞空精品影院首页| 久久国产精品大桥未久av| 国产成人欧美在线观看 | 超碰97精品在线观看| av在线播放免费不卡| 国产亚洲欧美在线一区二区| 中文亚洲av片在线观看爽 | 老鸭窝网址在线观看| 欧美一级毛片孕妇| www日本在线高清视频| 免费黄频网站在线观看国产| 午夜福利免费观看在线| 精品一区二区三区四区五区乱码| 亚洲免费av在线视频| 久久精品国产综合久久久| 少妇粗大呻吟视频| a级片在线免费高清观看视频| 91成人精品电影| 欧美日韩乱码在线| 亚洲免费av在线视频| 久久国产精品影院| 国产主播在线观看一区二区| 高清毛片免费观看视频网站 | 欧美乱妇无乱码| 高清黄色对白视频在线免费看| 亚洲精品美女久久久久99蜜臀| 91国产中文字幕| 亚洲欧美日韩高清在线视频| 精品福利观看| 亚洲av成人不卡在线观看播放网| 麻豆av在线久日| 亚洲欧美一区二区三区久久| 国产91精品成人一区二区三区| 性少妇av在线| 女人爽到高潮嗷嗷叫在线视频| 国产主播在线观看一区二区| 人成视频在线观看免费观看| 亚洲精品国产一区二区精华液| 老司机在亚洲福利影院| 久久国产精品男人的天堂亚洲| 老鸭窝网址在线观看| 真人做人爱边吃奶动态| 日韩欧美一区二区三区在线观看 | 色尼玛亚洲综合影院| 美女视频免费永久观看网站| 少妇裸体淫交视频免费看高清 | 自线自在国产av| 99re6热这里在线精品视频| 欧美老熟妇乱子伦牲交| 午夜两性在线视频| 久久精品国产亚洲av香蕉五月 | 欧美在线黄色| 女性生殖器流出的白浆| 女人精品久久久久毛片| 91九色精品人成在线观看| 欧美在线黄色| 国产成人一区二区三区免费视频网站| 在线观看66精品国产| 国产精品av久久久久免费| 亚洲精品久久午夜乱码| 久久婷婷成人综合色麻豆| 国产精品久久久人人做人人爽| 中文字幕另类日韩欧美亚洲嫩草| 欧美精品av麻豆av| 在线观看www视频免费| 久久精品aⅴ一区二区三区四区| av网站免费在线观看视频| 伦理电影免费视频| 啦啦啦在线免费观看视频4| 精品久久久久久,| 欧美激情高清一区二区三区| 侵犯人妻中文字幕一二三四区| 激情视频va一区二区三区| 露出奶头的视频| 国产亚洲欧美精品永久| 91在线观看av| 亚洲国产看品久久| av网站免费在线观看视频| 人人妻人人添人人爽欧美一区卜| 欧美亚洲日本最大视频资源| 人妻 亚洲 视频| 国产精华一区二区三区| 国产99久久九九免费精品| 午夜福利乱码中文字幕| 欧美亚洲 丝袜 人妻 在线| 午夜免费鲁丝| 人人妻人人澡人人看| 后天国语完整版免费观看| 人妻丰满熟妇av一区二区三区 | 国产一区二区三区视频了| 久久天堂一区二区三区四区| 亚洲熟女精品中文字幕| 高潮久久久久久久久久久不卡| 亚洲精品成人av观看孕妇| 99国产精品免费福利视频| 大香蕉久久成人网| 脱女人内裤的视频| 欧美精品高潮呻吟av久久| 交换朋友夫妻互换小说| www.熟女人妻精品国产| 久久久久久免费高清国产稀缺| а√天堂www在线а√下载 | 在线观看一区二区三区激情| 在线视频色国产色| 国产亚洲精品第一综合不卡| 精品久久久久久久毛片微露脸| 99热国产这里只有精品6| 精品福利观看| 亚洲男人天堂网一区| 黄色视频,在线免费观看| 国产成人欧美在线观看 | 国产精品久久久av美女十八| 狠狠狠狠99中文字幕| 高清在线国产一区| 欧美亚洲日本最大视频资源| 女性生殖器流出的白浆| av一本久久久久| tube8黄色片| 久久精品亚洲av国产电影网| 久久精品亚洲熟妇少妇任你| 黄色视频不卡| 在线播放国产精品三级| 亚洲少妇的诱惑av| 成人黄色视频免费在线看| 成年版毛片免费区| av有码第一页| 黑人猛操日本美女一级片| 亚洲精品一卡2卡三卡4卡5卡| 亚洲性夜色夜夜综合| 国产精品永久免费网站| 天天躁狠狠躁夜夜躁狠狠躁| av福利片在线| 九色亚洲精品在线播放| 日本黄色视频三级网站网址 | 老司机午夜十八禁免费视频| 色老头精品视频在线观看| 在线永久观看黄色视频| 亚洲精品乱久久久久久| 99久久国产精品久久久| 捣出白浆h1v1| 欧美日韩福利视频一区二区| 亚洲自偷自拍图片 自拍| av有码第一页| 色尼玛亚洲综合影院| 日韩欧美国产一区二区入口| 在线观看免费日韩欧美大片| 9热在线视频观看99| 国产亚洲精品久久久久5区| 国产1区2区3区精品| 黄色女人牲交| 首页视频小说图片口味搜索| 午夜精品国产一区二区电影| 麻豆国产av国片精品| 亚洲熟女毛片儿| 国产精华一区二区三区| 亚洲专区国产一区二区| 国产精品av久久久久免费| 国产99久久九九免费精品| 宅男免费午夜| 国产成人啪精品午夜网站| 无遮挡黄片免费观看| av福利片在线| 老司机靠b影院| 香蕉国产在线看| 999久久久精品免费观看国产| 成人手机av| 国产亚洲精品久久久久久毛片 | 亚洲国产欧美网| 十八禁网站免费在线| 夫妻午夜视频| 新久久久久国产一级毛片| 操出白浆在线播放| 黄网站色视频无遮挡免费观看| 亚洲国产欧美一区二区综合| 欧美日韩av久久| 久久久久久久久久久久大奶| 欧美日韩精品网址| 中亚洲国语对白在线视频| 激情在线观看视频在线高清 | 精品卡一卡二卡四卡免费| 亚洲成av片中文字幕在线观看| 久久人妻av系列| 两个人免费观看高清视频| 久久香蕉激情| 欧美精品一区二区免费开放| 成人18禁高潮啪啪吃奶动态图| 黄色女人牲交| 国产激情久久老熟女| 亚洲精品在线观看二区| 三级毛片av免费| 日韩中文字幕欧美一区二区| 青草久久国产| 黄色 视频免费看| 午夜精品在线福利| 老熟妇仑乱视频hdxx| 日本一区二区免费在线视频| 天天躁夜夜躁狠狠躁躁| x7x7x7水蜜桃| 涩涩av久久男人的天堂| 国产单亲对白刺激| 在线观看一区二区三区激情| 99久久综合精品五月天人人| av在线播放免费不卡| 欧洲精品卡2卡3卡4卡5卡区| 精品视频人人做人人爽| 人妻久久中文字幕网| 国产精品久久久av美女十八| 国产精品亚洲av一区麻豆| www.自偷自拍.com| 波多野结衣一区麻豆| 欧美 日韩 精品 国产| 国产精品偷伦视频观看了| 成熟少妇高潮喷水视频| 久久香蕉精品热| a级毛片在线看网站| 岛国在线观看网站| 亚洲中文字幕日韩| 欧美日韩乱码在线| 国产亚洲精品一区二区www | 成人18禁在线播放| 国产av一区二区精品久久| 18禁裸乳无遮挡动漫免费视频| ponron亚洲| 久久久精品国产亚洲av高清涩受| 乱人伦中国视频| 久久久国产成人精品二区 | 日韩精品免费视频一区二区三区| 可以免费在线观看a视频的电影网站| 午夜影院日韩av| 久久久久久亚洲精品国产蜜桃av| 国产野战对白在线观看| 欧美丝袜亚洲另类 | 国产真人三级小视频在线观看| 少妇的丰满在线观看| 国产在线观看jvid| 精品欧美一区二区三区在线| 一级a爱片免费观看的视频| 中文字幕色久视频| 国产不卡一卡二| 色尼玛亚洲综合影院| 18禁国产床啪视频网站| 精品久久久久久久久久免费视频 | 成人影院久久| 757午夜福利合集在线观看| 午夜福利在线免费观看网站| 在线国产一区二区在线| 天堂中文最新版在线下载| 在线十欧美十亚洲十日本专区| 满18在线观看网站| 久久久久国产精品人妻aⅴ院 | 啦啦啦在线免费观看视频4| av有码第一页| 色播在线永久视频| 日韩欧美免费精品| www日本在线高清视频| 久久99一区二区三区| 国产精品久久久久成人av| 久久人妻熟女aⅴ| 国产精品98久久久久久宅男小说| 亚洲精品自拍成人| 国产无遮挡羞羞视频在线观看| 国产熟女午夜一区二区三区| 美女视频免费永久观看网站| 国产极品粉嫩免费观看在线| 国产男靠女视频免费网站| 亚洲第一欧美日韩一区二区三区| 久久久精品免费免费高清| 久久热在线av| 国产又色又爽无遮挡免费看| 亚洲成人免费电影在线观看| 亚洲美女黄片视频| 亚洲精品粉嫩美女一区| 国产精品电影一区二区三区 | 欧洲精品卡2卡3卡4卡5卡区| 亚洲,欧美精品.| 欧美最黄视频在线播放免费 | 久久久精品免费免费高清| 淫妇啪啪啪对白视频| 久久久水蜜桃国产精品网| 国产成人精品久久二区二区免费| 欧美激情高清一区二区三区| 欧美性长视频在线观看| 满18在线观看网站| 麻豆成人av在线观看| 在线观看日韩欧美| 免费黄频网站在线观看国产| 黑人猛操日本美女一级片| 美女高潮喷水抽搐中文字幕| 午夜免费鲁丝| 免费高清在线观看日韩| 搡老熟女国产l中国老女人| 国产一区二区三区在线臀色熟女 | 免费在线观看日本一区| 欧美午夜高清在线| 伦理电影免费视频| 人妻一区二区av| 99精品在免费线老司机午夜| 露出奶头的视频| 亚洲国产精品合色在线| 桃红色精品国产亚洲av| 久久久久久久国产电影| 国产成人免费观看mmmm| 欧美黑人精品巨大| 精品第一国产精品| 亚洲精品久久成人aⅴ小说| 色94色欧美一区二区| 日韩欧美在线二视频 | 黄色片一级片一级黄色片| 国产在线观看jvid| 黑人猛操日本美女一级片| 精品人妻熟女毛片av久久网站| xxx96com| 欧美日韩亚洲综合一区二区三区_| 岛国在线观看网站| 久久香蕉激情| 精品国产一区二区三区四区第35| 黄色a级毛片大全视频| 香蕉丝袜av| 亚洲欧美日韩另类电影网站| 日本一区二区免费在线视频| 国产不卡一卡二| 国产99久久九九免费精品| 久久中文字幕人妻熟女| 国产精品一区二区精品视频观看| 国产色视频综合| 韩国精品一区二区三区| 狂野欧美激情性xxxx|