欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于推流終端網(wǎng)絡(luò)狀況的優(yōu)化方法和系統(tǒng)以及推流終端與流程

文檔序號(hào):11628631閱讀:225來(lái)源:國(guó)知局
一種基于推流終端網(wǎng)絡(luò)狀況的優(yōu)化方法和系統(tǒng)以及推流終端與流程

本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別涉及一種基于推流終端網(wǎng)絡(luò)狀況的優(yōu)化方法和系統(tǒng)以及推流終端。



背景技術(shù):

近些年來(lái),隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,各種流媒體應(yīng)用逐漸進(jìn)入廣大網(wǎng)民的日常生活中,眾多直播實(shí)時(shí)類業(yè)務(wù)因其原創(chuàng)新穎的內(nèi)容吸引大量用戶,如何對(duì)音視頻延遲進(jìn)行優(yōu)化,提升用戶體驗(yàn)成為音視頻直播業(yè)務(wù)發(fā)展的方向。

目前,隨著我國(guó)帶寬提速的發(fā)展以及移動(dòng)通信技術(shù)的快速發(fā)展,人們不再受地域的限制,可以隨時(shí)隨地通過(guò)互聯(lián)網(wǎng)獲取文字、圖片和視頻,這大大豐富了人們的業(yè)余生活。隨著智能手機(jī)的普及和移動(dòng)帶寬的迅猛發(fā)展,手機(jī)端推流成為了視頻的一種重要的方式,越來(lái)越多的人開(kāi)始用手機(jī)直播視頻。

但是,現(xiàn)有的移動(dòng)網(wǎng)絡(luò)存在不穩(wěn)定性、多變性以及容易受環(huán)境和地域影響的缺點(diǎn),導(dǎo)致移動(dòng)端推流存在不穩(wěn)定性;而且移動(dòng)推流端上傳的帶寬是不可控的,因此很容易受客觀因素的影響,一旦出現(xiàn)帶寬波動(dòng),觀看端很容易出現(xiàn)卡頓、花屏和延遲增大等情況,這會(huì)影響視頻觀看的流暢度,進(jìn)而影響客戶體驗(yàn)。



技術(shù)實(shí)現(xiàn)要素:

為了解決現(xiàn)有技術(shù)的問(wèn)題,本發(fā)明實(shí)施例提供了一種基于推流終端網(wǎng)絡(luò)狀況的優(yōu)化方法和系統(tǒng)以及推流終端。所述技術(shù)方案如下:

一方面,一種基于推流終端網(wǎng)絡(luò)狀況的優(yōu)化方法,包括以下步驟:

所述推流終端根據(jù)當(dāng)前實(shí)時(shí)上行帶寬來(lái)確定當(dāng)前數(shù)據(jù)的傳送時(shí)間;

判斷當(dāng)前數(shù)據(jù)的傳送時(shí)間是否超過(guò)預(yù)設(shè)值;

若當(dāng)前數(shù)據(jù)的傳送時(shí)間超過(guò)預(yù)設(shè)值,則采取丟幀方式減少上傳的數(shù)據(jù)量。

進(jìn)一步的,所述推流終端根據(jù)當(dāng)前實(shí)時(shí)上行帶寬來(lái)確定當(dāng)前數(shù)據(jù)的傳送時(shí)間的步驟具體包括:

所述推流終端采集音頻數(shù)據(jù)和/或視頻數(shù)據(jù);

分別對(duì)采集到的音頻數(shù)據(jù)和/或視頻數(shù)據(jù)進(jìn)行音頻編碼和/或視頻編碼;

將編碼后的音頻數(shù)據(jù)和/或編碼后的視頻數(shù)據(jù)封裝成流媒體格式數(shù)據(jù);

將封裝后的所述流媒體格式數(shù)據(jù)放入待發(fā)送的隊(duì)列中;

從所述隊(duì)列中取出所述流媒體格式數(shù)據(jù)發(fā)送到中轉(zhuǎn)終端;

通過(guò)實(shí)時(shí)統(tǒng)計(jì)單位時(shí)間內(nèi)發(fā)送所述流媒體格式數(shù)據(jù)的量來(lái)計(jì)算當(dāng)前實(shí)時(shí)上行帶寬;

根據(jù)所述當(dāng)前實(shí)時(shí)上行帶寬來(lái)確定當(dāng)前數(shù)據(jù)的傳送時(shí)間。

進(jìn)一步的,所述方法還包括以下步驟:

若當(dāng)前數(shù)據(jù)的傳送時(shí)間沒(méi)有超過(guò)預(yù)設(shè)值,則繼續(xù)從待發(fā)送的隊(duì)列中依序發(fā)送剩余的流媒體格式數(shù)據(jù)。

另一方面,一種基于推流終端網(wǎng)絡(luò)狀況的優(yōu)化系統(tǒng),包括推流終端、觀看終端以及中轉(zhuǎn)終端,所述推流終端通過(guò)所述中轉(zhuǎn)終端將采集到的流媒體格式數(shù)據(jù)推送給所述觀看終端進(jìn)行觀看,其中,所述推流終端具體包括:

確定模塊,用于根據(jù)當(dāng)前實(shí)時(shí)上行帶寬來(lái)確定當(dāng)前數(shù)據(jù)的傳送時(shí)間;

判斷模塊,用于判斷當(dāng)前數(shù)據(jù)的傳送時(shí)間是否超過(guò)預(yù)設(shè)值;

丟幀模塊,用于若當(dāng)前數(shù)據(jù)的傳送時(shí)間超過(guò)預(yù)設(shè)值,則采取丟幀方式減少上傳的數(shù)據(jù)量。

進(jìn)一步的,所述確定模塊具體包括:

采集子模塊,用于采集音頻數(shù)據(jù)和/或視頻數(shù)據(jù);

編碼子模塊,用于分別對(duì)采集到的音頻數(shù)據(jù)和/或視頻數(shù)據(jù)進(jìn)行音頻編碼和/或視頻編碼;

流協(xié)議子模塊,用于將編碼后的音頻數(shù)據(jù)和/或編碼后的視頻數(shù)據(jù)封裝成流媒體格式數(shù)據(jù);

帶寬檢測(cè)子模塊,用于將封裝后的所述流媒體格式數(shù)據(jù)放入待發(fā)送的隊(duì)列中,從所述隊(duì)列中取出所述流媒體格式數(shù)據(jù)發(fā)送到中轉(zhuǎn)終端,通過(guò)實(shí)時(shí)統(tǒng)計(jì)單位時(shí)間內(nèi)發(fā)送所述流媒體格式數(shù)據(jù)的量來(lái)計(jì)算當(dāng)前實(shí)時(shí)上行帶寬,并根據(jù)所述當(dāng)前實(shí)時(shí)上行帶寬來(lái)確定當(dāng)前數(shù)據(jù)的傳送時(shí)間。

進(jìn)一步的,所述推流終端具體還包括:

發(fā)送模塊,用于若當(dāng)前數(shù)據(jù)的傳送時(shí)間沒(méi)有超過(guò)預(yù)設(shè)值,則繼續(xù)從待發(fā)送的隊(duì)列中依序發(fā)送剩余的流媒體格式數(shù)據(jù)。

又一方面,一種推流終端,包括:

確定模塊,用于根據(jù)當(dāng)前實(shí)時(shí)上行帶寬來(lái)確定當(dāng)前數(shù)據(jù)的傳送時(shí)間;

判斷模塊,用于判斷當(dāng)前數(shù)據(jù)的傳送時(shí)間是否超過(guò)預(yù)設(shè)值;

丟幀模塊,用于若當(dāng)前數(shù)據(jù)的傳送時(shí)間超過(guò)預(yù)設(shè)值,則采取丟幀方式減少上傳的數(shù)據(jù)量。

進(jìn)一步的,所述確定模塊具體包括:

采集子模塊,用于采集音頻數(shù)據(jù)和/或視頻數(shù)據(jù);

編碼子模塊,用于分別對(duì)采集到的音頻數(shù)據(jù)和/或視頻數(shù)據(jù)進(jìn)行音頻編碼和/或視頻編碼;

流協(xié)議子模塊,用于將編碼后的音頻數(shù)據(jù)和/或編碼后的視頻數(shù)據(jù)封裝成流媒體格式數(shù)據(jù);

帶寬檢測(cè)子模塊,用于將封裝后的所述流媒體格式數(shù)據(jù)放入待發(fā)送的隊(duì)列中,從所述隊(duì)列中取出所述流媒體格式數(shù)據(jù)發(fā)送到中轉(zhuǎn)終端,通過(guò)實(shí)時(shí)統(tǒng)計(jì)單位時(shí)間內(nèi)發(fā)送所述流媒體格式數(shù)據(jù)的量來(lái)計(jì)算當(dāng)前實(shí)時(shí)上行帶寬。

進(jìn)一步的,所述帶寬檢測(cè)子模塊,還用于根據(jù)所述當(dāng)前實(shí)時(shí)上行帶寬來(lái)確定當(dāng)前數(shù)據(jù)的傳送時(shí)間。

進(jìn)一步的,所述推流終端具體還包括:

發(fā)送模塊,用于若當(dāng)前數(shù)據(jù)的傳送時(shí)間沒(méi)有超過(guò)預(yù)設(shè)值,則繼續(xù)從待發(fā)送的隊(duì)列中依序發(fā)送剩余的流媒體格式數(shù)據(jù)。

本發(fā)明實(shí)施例提供的技術(shù)方案帶來(lái)的有益效果是:能實(shí)時(shí)檢測(cè)推流終端的網(wǎng)絡(luò)情況,實(shí)時(shí)了解上行帶寬的變化,從源頭上控制生產(chǎn),減少生產(chǎn)量,減少上傳數(shù)據(jù)量,使客戶可以在推流終端的上行帶寬不佳的情況下,還能流暢的推流,從而極大的提高了用戶的觀看體驗(yàn),當(dāng)檢測(cè)到帶寬逐漸變好時(shí),就停止丟幀,保護(hù)了推流終端推流的質(zhì)量。

附圖說(shuō)明

為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1為本發(fā)明一實(shí)施方式中基于推流終端網(wǎng)絡(luò)狀況的優(yōu)化方法流程圖;

圖2為本發(fā)明一實(shí)施方式中圖1所示步驟s1的詳細(xì)子步驟流程圖;

圖3為本發(fā)明一實(shí)施方式中基于推流終端網(wǎng)絡(luò)狀況的優(yōu)化系統(tǒng)10的內(nèi)部結(jié)構(gòu)示意圖;

圖4為本發(fā)明一實(shí)施方式中圖3所示推流終端11的確定模塊111內(nèi)部結(jié)構(gòu)示意圖。

具體實(shí)施方式

為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

以下將對(duì)本發(fā)明所提供的一種基于推流終端網(wǎng)絡(luò)狀況的優(yōu)化方法進(jìn)行詳細(xì)說(shuō)明。

請(qǐng)參閱圖1,為本發(fā)明一實(shí)施方式中基于推流終端網(wǎng)絡(luò)狀況的優(yōu)化方法流程圖。

在一實(shí)施方式中,該基于推流終端網(wǎng)絡(luò)狀況的優(yōu)化方法應(yīng)用于基于推流終端網(wǎng)絡(luò)狀況的優(yōu)化系統(tǒng),其中,所述基于推流終端網(wǎng)絡(luò)狀況的優(yōu)化系統(tǒng)包括推流終端、觀看終端以及中轉(zhuǎn)終端,所述推流終端通過(guò)所述中轉(zhuǎn)終端將采集到的流媒體格式數(shù)據(jù)推送給所述觀看終端進(jìn)行觀看,推流終端是指用戶終端設(shè)備,包括手機(jī)、平板電腦、掌上電腦等,中轉(zhuǎn)終端可以是網(wǎng)絡(luò)中的各種中轉(zhuǎn)設(shè)備,例如路由器和服務(wù)器等,具體可以是cdn流媒體集群,觀看終端可以是各種流媒體數(shù)據(jù)的接收顯示終端,例如移動(dòng)顯示終端(如手機(jī)、平板電腦等)和固定顯示終端(如臺(tái)式計(jì)算機(jī)等)。推流終端至少包括語(yǔ)音采集設(shè)備(如麥克風(fēng)等)和視頻采集設(shè)備(如攝像頭等),通過(guò)這些設(shè)備采集流媒體格式數(shù)據(jù),并將采集到的流媒體格式數(shù)據(jù)通過(guò)中轉(zhuǎn)終端的轉(zhuǎn)發(fā)推送給觀看終端進(jìn)行觀看。

本發(fā)明的方法主要優(yōu)化推流終端,從源頭處理,推流終端的功能可以分為采集、編碼和發(fā)送三個(gè)環(huán)節(jié),各個(gè)環(huán)節(jié)又相互影響,先采集后編碼最后是發(fā)送,這是一個(gè)生產(chǎn)消費(fèi)的過(guò)程,本發(fā)明通過(guò)發(fā)送環(huán)節(jié),從最終消費(fèi)的情況來(lái)確定前面的環(huán)節(jié)是否丟幀,以結(jié)果導(dǎo)向來(lái)控制生產(chǎn),直接從采集的環(huán)節(jié)入手,控制采集的頻率。

在步驟s1中,推流終端根據(jù)當(dāng)前實(shí)時(shí)上行帶寬來(lái)確定當(dāng)前數(shù)據(jù)的傳送時(shí)間。

在一實(shí)施方式中,所述推流終端根據(jù)當(dāng)前實(shí)時(shí)上行帶寬來(lái)確定當(dāng)前數(shù)據(jù)的傳送時(shí)間的步驟s1具體包括s11-s17七個(gè)子步驟,如圖2所示。

請(qǐng)參閱圖2,為本發(fā)明一實(shí)施方式中圖1所示步驟s1的詳細(xì)子步驟流程圖。

在步驟s11中,推流終端采集音頻數(shù)據(jù)和/或視頻數(shù)據(jù)。

在一實(shí)施方式中,推流終端通過(guò)其語(yǔ)音采集設(shè)備(如麥克風(fēng)等)采集語(yǔ)音數(shù)據(jù),如脈碼編碼調(diào)制(pulsecodemodulation,pcm)格式的語(yǔ)音數(shù)據(jù),同時(shí)推流終端通過(guò)其視頻采集設(shè)備(如攝像頭等)或系統(tǒng)的接口,以回調(diào)方式采集獲取如yuv格式的視頻數(shù)據(jù),或者如pcm格式的語(yǔ)音數(shù)據(jù)。

在一實(shí)施方式中,具體采集步驟可以舉例如下:

(1)對(duì)于視頻而言:通過(guò)其視頻采集設(shè)備(如攝像頭等)采集視頻數(shù)據(jù),設(shè)置一個(gè)幀率、寬高等信息,例如幀率25幀,寬高720*1080,系統(tǒng)每隔1000ms/25=40ms回調(diào)一個(gè)yuv數(shù)據(jù);

(2)對(duì)于音頻而言:通過(guò)其語(yǔ)音采集設(shè)備(如麥克風(fēng)等)采集語(yǔ)音數(shù)據(jù),設(shè)置采樣率、通道數(shù)、位數(shù)等信息。例如采樣率44100,通道數(shù)2,位數(shù)16位,每秒采集44100個(gè)樣本,每個(gè)樣本有兩個(gè)通道,各16位。

在步驟s12中,分別對(duì)采集到的音頻數(shù)據(jù)和/或視頻數(shù)據(jù)進(jìn)行音頻編碼和/或視頻編碼。例如,用ffmpeg、x264、faac、硬編等編碼工具,分別對(duì)yuv和pcm編碼成h264和aac。

在一實(shí)施方式中,采用h.264視頻編碼方法將采集到的視頻數(shù)據(jù)編碼成h.264格式的視頻數(shù)據(jù),采用高級(jí)音頻編碼(advancedaudiocoding,aac)方法將采集到的音頻數(shù)據(jù)編碼成aac格式的音頻數(shù)據(jù)。

在一實(shí)施方式中,具體編碼步驟可以舉例如下:

(1)視頻編碼:初始化視頻的編碼參數(shù),寬高、幀率、碼率、碼率模式等信息,調(diào)用編碼器的編碼接口,把系統(tǒng)回調(diào)的與數(shù)據(jù),編碼成h264,在把h264通過(guò)流協(xié)議子模塊,封裝成流媒體格式。例如寬高720*1080,幀率25,碼率1mbps等,通過(guò)x264、ffmpeg硬編把yuv編碼成h264;

(2)音頻編碼:初始音頻編碼參數(shù),采樣率、通道數(shù)、位數(shù)等信息,通過(guò)系統(tǒng)回調(diào)的pcm數(shù)據(jù),通過(guò)aac編碼器編接口碼成aac。例如采樣率44100,通道數(shù)2,位數(shù)16位,通過(guò)faac、硬編等編碼器,把pcm編碼成aac;

(3)在通道采集的的順序,按照順序放入流媒體協(xié)議模塊,把音視頻數(shù)據(jù)轉(zhuǎn)化成流媒體格式的數(shù)據(jù)。

在步驟s13中,將編碼后的音頻數(shù)據(jù)和/或編碼后的視頻數(shù)據(jù)封裝成流媒體格式數(shù)據(jù)。根據(jù)不同的流媒體協(xié)議,例如用流媒體rtmp協(xié)議,把h264和aac編碼成符合rtmp協(xié)議的數(shù)據(jù)。

在一實(shí)施方式中,采用實(shí)時(shí)消息傳輸(realtimemessagingprotocol,rtmp)協(xié)議,將編碼后的音頻數(shù)據(jù)和/或編碼后的視頻數(shù)據(jù)封裝成rtmp格式的流媒體數(shù)據(jù)。

在一實(shí)施方式中,具體封裝步驟可以舉例如下:

(1)采用rtmp協(xié)議,與服務(wù)器建立連接,獲取一個(gè)發(fā)布流明的地址;

(2)獲取編碼器生成的h.264和aac等數(shù)據(jù),按照編碼器采集的時(shí)間進(jìn)行排序,按照排序的時(shí)間,分別對(duì)h.264和aac等進(jìn)行rtmp協(xié)議的封裝;

(3)把封裝好的流媒體格式的數(shù)據(jù),放入的發(fā)送隊(duì)列,放入對(duì)列的時(shí)候,會(huì)把一些編碼的信息如視頻的寬高、碼率、幀率,音頻的采樣率和通道數(shù)等信息,會(huì)一起存入隊(duì)列,放入隊(duì)列的數(shù)據(jù)會(huì)等待發(fā)送模塊來(lái)發(fā)送數(shù)據(jù)。

在步驟s14中,將封裝后的所述流媒體格式數(shù)據(jù)放入待發(fā)送的隊(duì)列中。

在一實(shí)施方式中,在推流終端的存儲(chǔ)器中劃分有一暫存區(qū),用于暫時(shí)存儲(chǔ)流媒體數(shù)據(jù),采用rtmp協(xié)議封裝后的流媒體數(shù)據(jù)放入待發(fā)送的隊(duì)列中,其中,待發(fā)送的隊(duì)列存儲(chǔ)在存儲(chǔ)器的暫存區(qū)中。

在步驟s15中,從隊(duì)列中取出流媒體格式數(shù)據(jù)發(fā)送到中轉(zhuǎn)終端。

在步驟s16中,通過(guò)實(shí)時(shí)統(tǒng)計(jì)單位時(shí)間內(nèi)發(fā)送所述流媒體格式數(shù)據(jù)的量來(lái)計(jì)算當(dāng)前實(shí)時(shí)上行帶寬。

在一實(shí)施方式中,具體計(jì)算步驟可以舉例如下:

(1)從隊(duì)列取出數(shù)據(jù)后,發(fā)送一幀記錄下發(fā)送的時(shí)間和發(fā)送的數(shù)據(jù)大??;

(2)因?yàn)槭歉鶕?jù)實(shí)時(shí)速率與發(fā)送隊(duì)列緩沖的數(shù)據(jù)來(lái)判斷延遲,需要配置一個(gè)統(tǒng)計(jì)的單位時(shí)間,這個(gè)就是單位時(shí)間。根據(jù)配置的單位時(shí)間,統(tǒng)計(jì)當(dāng)前配置的單位時(shí)間內(nèi)發(fā)送的總數(shù)據(jù),總數(shù)據(jù)/總時(shí)長(zhǎng)=發(fā)送速率;

(3)計(jì)算在待發(fā)送的隊(duì)列中剩余的緩存數(shù)據(jù)量,然后根據(jù)計(jì)算得到的上行帶寬和在待發(fā)送隊(duì)列中緩存的剩余流媒體數(shù)據(jù)的數(shù)據(jù)量來(lái)統(tǒng)計(jì)當(dāng)前這些待發(fā)送流媒體數(shù)據(jù)的傳送時(shí)間。

在一實(shí)施方式中,單位時(shí)間可以根據(jù)需求靈活配置,例如單位時(shí)間為1s,把待發(fā)送隊(duì)列中的流媒體數(shù)據(jù)取出部分?jǐn)?shù)據(jù)放入發(fā)送模塊中進(jìn)行發(fā)送,實(shí)時(shí)統(tǒng)計(jì)單位時(shí)間內(nèi)發(fā)送部分流媒體數(shù)據(jù)的量,例如在單位時(shí)間1s內(nèi)發(fā)送了8m比特的流媒體數(shù)據(jù),則計(jì)算得到的上行數(shù)據(jù)的發(fā)送速率為8mbps,此時(shí)的上行帶寬就為1m。

在步驟s17中,根據(jù)所述當(dāng)前實(shí)時(shí)上行帶寬來(lái)確定當(dāng)前數(shù)據(jù)的傳送時(shí)間。

在一實(shí)施方式中,在發(fā)送了部分?jǐn)?shù)據(jù)以統(tǒng)計(jì)到上行帶寬之后,計(jì)算在待發(fā)送的隊(duì)列中剩余的緩存數(shù)據(jù)量,然后根據(jù)計(jì)算得到的上行帶寬和在待發(fā)送隊(duì)列中緩存的剩余流媒體數(shù)據(jù)的數(shù)據(jù)量來(lái)統(tǒng)計(jì)當(dāng)前這些待發(fā)送流媒體數(shù)據(jù)的傳送時(shí)間,例如,單位時(shí)間為1s,待發(fā)送隊(duì)列中的流媒體數(shù)據(jù)總共有12m比特大小,之前單位時(shí)間所取出部分?jǐn)?shù)據(jù)(如8m比特)統(tǒng)計(jì)得到上行數(shù)據(jù)的發(fā)送速率為8mbps,也就是上行帶寬為1m,此時(shí)統(tǒng)計(jì)剩余流媒體數(shù)據(jù)的量為4m比特,因此,根據(jù)當(dāng)前實(shí)時(shí)上行帶寬和剩余流媒體數(shù)據(jù)量計(jì)算得到當(dāng)前這些待發(fā)送流媒體數(shù)據(jù)的傳送時(shí)間為500ms,也就是說(shuō)預(yù)計(jì)發(fā)送完剩余的這些流媒體數(shù)據(jù)需要500ms的時(shí)間。請(qǐng)繼續(xù)參閱圖1,在步驟s2中,判斷當(dāng)前數(shù)據(jù)的傳送時(shí)間是否超過(guò)預(yù)設(shè)值。

在一實(shí)施方式中,預(yù)設(shè)值可以根據(jù)需求靈活設(shè)置,例如預(yù)設(shè)值為400ms。

若當(dāng)前數(shù)據(jù)的傳送時(shí)間超過(guò)預(yù)設(shè)值,則在步驟s3中,采取丟幀方式減少上傳的數(shù)據(jù)量。

在一實(shí)施方式中,具體丟幀步驟可以舉例如下:

(1)根據(jù)目前緩存的總數(shù)據(jù)量,與當(dāng)前實(shí)時(shí)速率,進(jìn)行計(jì)算,總數(shù)據(jù)量/實(shí)時(shí)速率=傳送時(shí)間,預(yù)設(shè)一個(gè),傳送時(shí)間t1,當(dāng)前的傳送時(shí)間tn;

(2)編碼的時(shí)候初始化一個(gè)幀率k,預(yù)先設(shè)置丟幀的下限k1,上限k2,為當(dāng)前設(shè)置幀率,kn為當(dāng)前實(shí)際幀率,初始化kn=k,當(dāng)前幀率的范圍在k1和k2之間,即k1<=kn<=k2,一般默認(rèn)k2=k,初始化為k2的上限,新的幀率為kn=kn/(tn/t1);這個(gè)幀率是實(shí)時(shí)變化的;

(3)若當(dāng)前數(shù)據(jù)的傳送時(shí)間超過(guò)預(yù)設(shè)值,即tn>t1,采取丟幀方式減少上傳的數(shù)據(jù)量。具體丟幀方法,若是kn>k2,則kn=k2,若kn<k1,則kn=k1;

(4)若當(dāng)前數(shù)據(jù)的傳送時(shí)間沒(méi)有超過(guò)預(yù)設(shè)值,即tn<t1,則逐步增加幀率,直到回復(fù)當(dāng)前的最打幀率,增加的公式為:新kn=kn/(tn/t1)。

在一實(shí)施方式中,例如設(shè)置初始化的幀率25,上限為25,下限為10,如果根據(jù)上述的例子計(jì)算得到當(dāng)前數(shù)據(jù)的傳送時(shí)間為500ms的話,由于500ms大于預(yù)設(shè)值400ms,如果全部上傳,由于帶寬的影響會(huì)導(dǎo)致觀看終端接收到的直播推流出現(xiàn)卡頓、花屏和延遲增大等不佳的觀看體驗(yàn),因此,為了提高觀看體驗(yàn),就啟動(dòng)丟幀模塊,新的幀率為kn=kn/(tn/t1),按照公式新的kn=25/(500/400),即kn=20幀,每秒產(chǎn)生20幀,采取丟幀方式減少上傳的數(shù)據(jù)量,直到剩余緩存數(shù)據(jù)量的傳送時(shí)間少于預(yù)設(shè)值400ms。若是上述的例子計(jì)算得到當(dāng)前數(shù)據(jù)的傳送時(shí)間為300ms的話,當(dāng)前幀率為20,新的幀率為kn=kn/(tn/t1),按照公式新的kn=20/(300/400),即kn=26幀,因?yàn)閗n>上限k2,kn=k2=25幀。

若當(dāng)前數(shù)據(jù)的傳送時(shí)間沒(méi)有超過(guò)預(yù)設(shè)值,且?guī)蔬_(dá)到上限,則在步驟s4中,繼續(xù)從待發(fā)送的隊(duì)列中依序發(fā)送剩余的流媒體格式數(shù)據(jù)。

在一實(shí)施方式中,具體發(fā)送步驟可以舉例如下:

(1)采用rtmp流媒體協(xié)議,已經(jīng)和服務(wù)器進(jìn)行了rtmp協(xié)議的對(duì)接,循環(huán)從發(fā)送隊(duì)列取出一個(gè)帶發(fā)送的流媒體格式的數(shù)據(jù),發(fā)送給流媒體數(shù)據(jù);

(2)服務(wù)器收到客戶單的流媒體的格式的數(shù)據(jù),在分發(fā)給各個(gè)客戶端。

在一實(shí)施方式中,如果計(jì)算得到當(dāng)前數(shù)據(jù)的傳送時(shí)間為150ms,小于預(yù)設(shè)值400ms,則表明當(dāng)前上傳的帶寬充足,為了保證推流終端的推流質(zhì)量,就停止丟幀,增加幀率,繼續(xù)從待發(fā)送的隊(duì)列中依序發(fā)送剩余的流媒體格式數(shù)據(jù),保證推流業(yè)務(wù)的流暢度,提高觀看終端的觀看體驗(yàn)。

本發(fā)明提供的一種在tcp協(xié)議基礎(chǔ)上的基于推流終端網(wǎng)絡(luò)狀況的優(yōu)化方法,能實(shí)時(shí)檢測(cè)推流終端的網(wǎng)絡(luò)情況,實(shí)時(shí)了解上行帶寬的變化,從源頭上控制生產(chǎn),減少生產(chǎn)量,減少上傳數(shù)據(jù)量,使客戶可以在推流終端的上行帶寬不佳的情況下,還能流暢的推流,從而極大的提高了用戶的觀看體驗(yàn),當(dāng)檢測(cè)到帶寬逐漸變好時(shí),就停止丟幀,保護(hù)了推流終端推流的質(zhì)量。

以下將對(duì)本發(fā)明所提供的一種基于推流終端網(wǎng)絡(luò)狀況的優(yōu)化系統(tǒng)進(jìn)行詳細(xì)說(shuō)明。

請(qǐng)參閱圖3,所示為本發(fā)明一實(shí)施方式中,在tcp基礎(chǔ)上的,基于推流終端網(wǎng)絡(luò)狀況的優(yōu)化系統(tǒng)10的內(nèi)部結(jié)構(gòu)示意圖。

在一實(shí)施方式中,基于推流終端網(wǎng)絡(luò)狀況的優(yōu)化系統(tǒng)10包括推流終端11、觀看終端13以及中轉(zhuǎn)終端12,推流終端11通過(guò)中轉(zhuǎn)終端12將采集到的流媒體格式數(shù)據(jù)推送給觀看終端13進(jìn)行觀看,推流終端11是指用戶終端設(shè)備,包括手機(jī)、平板電腦和掌上電腦等,中轉(zhuǎn)終端12可以是網(wǎng)絡(luò)中的各種中轉(zhuǎn)設(shè)備,例如路由器和服務(wù)器等,觀看終端13可以是各種流媒體數(shù)據(jù)的接收顯示終端,例如移動(dòng)顯示終端(如手機(jī)和平板電腦等)和固定顯示終端(如臺(tái)式計(jì)算機(jī)等)。推流終端11至少包括語(yǔ)音采集設(shè)備(如麥克風(fēng)等)和視頻采集設(shè)備(如攝像頭等),通過(guò)這些設(shè)備采集流媒體格式數(shù)據(jù),并將采集到的流媒體格式數(shù)據(jù)通過(guò)中轉(zhuǎn)終端12的轉(zhuǎn)發(fā)推送給觀看終端進(jìn)行觀看,其中,中轉(zhuǎn)終端12可以包括多個(gè),推流終端11通過(guò)一個(gè)中轉(zhuǎn)終端12或者多個(gè)中轉(zhuǎn)終端12將采集到的流媒體格式數(shù)據(jù)推送給觀看終端13進(jìn)行觀看。

本發(fā)明的系統(tǒng)主要優(yōu)化推流終端11,從源頭處理,推流終端11的功能可以分為采集、編碼和發(fā)送三個(gè)環(huán)節(jié),各個(gè)環(huán)節(jié)又相互影響,先采集后編碼最后是發(fā)送,這是一個(gè)生產(chǎn)消費(fèi)的過(guò)程,本發(fā)明通過(guò)發(fā)送環(huán)節(jié),從最終消費(fèi)的情況來(lái)確定前面的環(huán)節(jié)是否丟幀,以結(jié)果導(dǎo)向來(lái)控制生產(chǎn),直接從采集的環(huán)節(jié)入手,控制采集的頻率。

推流終端11具體包括:確定模塊111、判斷模塊112、丟幀模塊113以及發(fā)送模塊114。

確定模塊111,用于根據(jù)當(dāng)前實(shí)時(shí)上行帶寬來(lái)確定當(dāng)前數(shù)據(jù)的傳送時(shí)間。

其中,確定模塊111具體包括:采集子模塊1111、編碼子模塊1112、流協(xié)議子模塊1113以及帶寬檢測(cè)子模塊1114,如圖4所示。

請(qǐng)參閱圖4,所示為本發(fā)明一實(shí)施方式中圖3所示推流終端11的確定模塊111內(nèi)部結(jié)構(gòu)示意圖。

采集子模塊1111,用于采集音頻數(shù)據(jù)和/或視頻數(shù)據(jù)。

在一實(shí)施方式中,采集子模塊1111通過(guò)其語(yǔ)音采集設(shè)備(如麥克風(fēng)等)采集語(yǔ)音數(shù)據(jù),如pcm格式的語(yǔ)音數(shù)據(jù),同時(shí)采集子模塊1111通過(guò)其視頻采集設(shè)備(如攝像頭等)或系統(tǒng)的接口,以回調(diào)方式采集獲取如yuv格式的視頻數(shù)據(jù),或者如pcm格式的語(yǔ)音數(shù)據(jù)。

在一實(shí)施方式中,具體采集步驟可以舉例如下:

(1)對(duì)于視頻而言:通過(guò)其視頻采集設(shè)備(如攝像頭等)采集視頻數(shù)據(jù),設(shè)置一個(gè)幀率、寬高等信息,例如幀率25幀,寬高720*1080,系統(tǒng)每隔1000ms/25=40ms回調(diào)一個(gè)yuv數(shù)據(jù);

(2)對(duì)于音頻而言:通過(guò)其語(yǔ)音采集設(shè)備(如麥克風(fēng)等)采集語(yǔ)音數(shù)據(jù),設(shè)置采樣率、通道數(shù)、位數(shù)等信息。例如采樣率44100,通道數(shù)2,位數(shù)16位,每秒采集44100個(gè)樣本,每個(gè)樣本有兩個(gè)通道,各16位。

編碼子模塊1112,用于分別對(duì)采集到的音頻數(shù)據(jù)和/或視頻數(shù)據(jù)進(jìn)行音頻編碼和/或視頻編碼。例如,用ffmpeg、x264、faac、硬編等編碼工具,分別對(duì)yuv和pcm編碼成h264和aac。

在一實(shí)施方式中,采用h.264視頻編碼方法將采集到的視頻數(shù)據(jù)編碼成h.264格式的視頻數(shù)據(jù),采用aac方法將采集到的音頻數(shù)據(jù)編碼成aac格式的音頻數(shù)據(jù)。

在一實(shí)施方式中,具體編碼步驟可以舉例如下:

(1)視頻編碼:初始化視頻的編碼參數(shù),寬高、幀率、碼率、碼率模式等信息,調(diào)用編碼器的編碼接口,把系統(tǒng)回調(diào)的與數(shù)據(jù),編碼成h264,在把h264通過(guò)流協(xié)議子模塊,封裝成流媒體格式。例如寬高720*1080,幀率25,碼率1mbps等,通過(guò)x264、ffmpeg硬編把yuv編碼成h264;

(2)音頻編碼:初始音頻編碼參數(shù),采樣率、通道數(shù)、位數(shù)等信息,通過(guò)系統(tǒng)回調(diào)的pcm數(shù)據(jù),通過(guò)aac編碼器編接口碼成aac。例如采樣率44100,通道數(shù)2,位數(shù)16位,通過(guò)faac、硬編等編碼器,把pcm編碼成faac;

(3)在通道采集的的順序,按照順序放入流媒體協(xié)議模塊,把音視頻數(shù)據(jù)轉(zhuǎn)化成流媒體格式的數(shù)據(jù)。

流協(xié)議子模塊1113,用于將編碼后的音頻數(shù)據(jù)和/或編碼后的視頻數(shù)據(jù)封裝成流媒體格式數(shù)據(jù)。根據(jù)不同的流媒體協(xié)議,例如用流媒體rtmp協(xié)議,把h264和aac編碼成符合rtmp協(xié)議的數(shù)據(jù)。

在一實(shí)施方式中,采用rtmp協(xié)議,將編碼后的音頻數(shù)據(jù)和/或編碼后的視頻數(shù)據(jù)封裝成rtmp格式的流媒體數(shù)據(jù)。

在一實(shí)施方式中,具體封裝步驟可以舉例如下:

(1)采用rtmp協(xié)議,與服務(wù)器建立連接,獲取一個(gè)發(fā)布流明的地址;

(2)獲取編碼器生成的h.264和aac等數(shù)據(jù),按照編碼器采集的時(shí)間進(jìn)行排序,按照排序的時(shí)間,分別對(duì)h.264和aac等進(jìn)行rtmp協(xié)議的封裝;

(3)把封裝好的流媒體格式的數(shù)據(jù),放入的發(fā)送隊(duì)列,放入對(duì)列的時(shí)候,會(huì)把一些編碼的信息如視頻的寬高、碼率、幀率,音頻的采樣率和通道數(shù)等信息,會(huì)一起存入隊(duì)列,放入隊(duì)列的數(shù)據(jù)會(huì)等待發(fā)送模塊來(lái)發(fā)送數(shù)據(jù)。

帶寬檢測(cè)子模塊1114,用于將封裝后的所述流媒體格式數(shù)據(jù)放入待發(fā)送的隊(duì)列中,通過(guò)實(shí)時(shí)統(tǒng)計(jì)單位時(shí)間內(nèi)發(fā)送所述流媒體格式數(shù)據(jù)的量來(lái)計(jì)算當(dāng)前實(shí)時(shí)上行帶寬,并根據(jù)所述當(dāng)前實(shí)時(shí)上行帶寬來(lái)確定當(dāng)前數(shù)據(jù)的傳送時(shí)間。

在一實(shí)施方式中,在推流終端11的存儲(chǔ)器中劃分有一暫存區(qū),用于暫時(shí)存儲(chǔ)流媒體數(shù)據(jù),采用rtmp協(xié)議封裝后的流媒體數(shù)據(jù)放入待發(fā)送的隊(duì)列中,其中,待發(fā)送的隊(duì)列存儲(chǔ)在存儲(chǔ)器的暫存區(qū)中。

在一實(shí)施方式中,具體計(jì)算步驟可以舉例如下:

(1)從隊(duì)列取出數(shù)據(jù)后,發(fā)送一幀記錄下發(fā)送的時(shí)間和發(fā)送的數(shù)據(jù)大??;

(2)因?yàn)槭歉鶕?jù)實(shí)時(shí)速率與發(fā)送隊(duì)列緩沖的數(shù)據(jù)來(lái)判斷延遲,需要配置一個(gè)統(tǒng)計(jì)的單位時(shí)間,這個(gè)就是單位時(shí)間。根據(jù)配置的單位時(shí)間,統(tǒng)計(jì)當(dāng)前配置的單位時(shí)間內(nèi)發(fā)送的總數(shù)據(jù),總數(shù)據(jù)/總時(shí)長(zhǎng)=發(fā)送速率;

(3)計(jì)算在待發(fā)送的隊(duì)列中剩余的緩存數(shù)據(jù)量,然后根據(jù)計(jì)算得到的上行帶寬和在待發(fā)送隊(duì)列中緩存的剩余流媒體數(shù)據(jù)的數(shù)據(jù)量來(lái)統(tǒng)計(jì)當(dāng)前這些待發(fā)送流媒體數(shù)據(jù)的傳送時(shí)間。

在一實(shí)施方式中,單位時(shí)間可以根據(jù)需求靈活配置,例如單位時(shí)間為1s,把待發(fā)送隊(duì)列中的流媒體數(shù)據(jù)取出部分?jǐn)?shù)據(jù)放入發(fā)送模塊中進(jìn)行發(fā)送,實(shí)時(shí)統(tǒng)計(jì)單位時(shí)間內(nèi)發(fā)送部分流媒體數(shù)據(jù)的量,例如在單位時(shí)間1s內(nèi)發(fā)送了8m比特的流媒體數(shù)據(jù),則計(jì)算得到的上行數(shù)據(jù)的發(fā)送速率為8mbps,此時(shí)的上行帶寬就為1m。

在一實(shí)施方式中,在發(fā)送了部分?jǐn)?shù)據(jù)以統(tǒng)計(jì)到上行帶寬之后,計(jì)算在待發(fā)送的隊(duì)列中剩余的緩存數(shù)據(jù)量,然后根據(jù)計(jì)算得到的上行帶寬和在待發(fā)送隊(duì)列中緩存的剩余流媒體數(shù)據(jù)的數(shù)據(jù)量來(lái)統(tǒng)計(jì)當(dāng)前這些待發(fā)送流媒體數(shù)據(jù)的傳送時(shí)間,例如,待發(fā)送隊(duì)列中的流媒體數(shù)據(jù)總共有12m比特大小,之前取出部分?jǐn)?shù)據(jù)(如8m比特)統(tǒng)計(jì)得到上行數(shù)據(jù)的發(fā)送速率為8mbps,也就是上行帶寬為1m,此時(shí)統(tǒng)計(jì)剩余流媒體數(shù)據(jù)的量為4m比特,因此,根據(jù)當(dāng)前實(shí)時(shí)上行帶寬和剩余流媒體數(shù)據(jù)量計(jì)算得到當(dāng)前這些待發(fā)送流媒體數(shù)據(jù)的傳送時(shí)間為500ms,也就是說(shuō)預(yù)計(jì)發(fā)送完剩余的這些流媒體數(shù)據(jù)需要500ms的時(shí)間。

請(qǐng)繼續(xù)參閱圖3,判斷模塊112,用于判斷當(dāng)前數(shù)據(jù)的傳送時(shí)間是否超過(guò)預(yù)設(shè)值。

在一實(shí)施方式中,預(yù)設(shè)值可以根據(jù)需求靈活設(shè)置,例如預(yù)設(shè)值為400ms。

丟幀模塊113,用于若當(dāng)前數(shù)據(jù)的傳送時(shí)間超過(guò)預(yù)設(shè)值,則采取丟幀方式減少上傳的數(shù)據(jù)量。

在一實(shí)施方式中,具體丟幀步驟可以舉例如下:

(1)根據(jù)目前緩存的總數(shù)據(jù)量,與當(dāng)前實(shí)時(shí)速率,進(jìn)行計(jì)算,總數(shù)據(jù)量/實(shí)時(shí)速率=傳送時(shí)間,預(yù)設(shè)一個(gè),傳送時(shí)間t1,當(dāng)前的傳送時(shí)間tn;

(2)編碼的時(shí)候初始化一個(gè)幀率k,預(yù)先設(shè)置丟幀的下限k1,上限k2,為當(dāng)前設(shè)置幀率,kn為當(dāng)前實(shí)際幀率,初始化kn=k,當(dāng)前幀率的范圍在k1和k2之間,即k1<=kn<=k2,一般默認(rèn)k2=k,初始化為k2的上限,新的幀率為kn=kn/(tn/t1);這個(gè)幀率是實(shí)時(shí)變化的;

(3)若當(dāng)前數(shù)據(jù)的傳送時(shí)間超過(guò)預(yù)設(shè)值,即tn>t1,采取丟幀方式減少上傳的數(shù)據(jù)量。具體丟幀方法,若是kn>k2,則kn=k2,若kn<k1,則kn=k1;

(4)若當(dāng)前數(shù)據(jù)的傳送時(shí)間沒(méi)有超過(guò)預(yù)設(shè)值,即tn<t1,則逐步增加幀率,直到回復(fù)當(dāng)前的最打幀率,增加的公式為:新kn=kn/(tn/t1)。

在一實(shí)施方式中,例如設(shè)置初始化的幀率25,上限為25,下限為10,如果根據(jù)上述的例子計(jì)算得到當(dāng)前數(shù)據(jù)的傳送時(shí)間為500ms的話,由于500ms大于預(yù)設(shè)值400ms,如果全部上傳,由于帶寬的影響會(huì)導(dǎo)致觀看終端13接收到的直播推流出現(xiàn)卡頓、花屏和延遲增大等不佳的觀看體驗(yàn),因此,為了提高觀看體驗(yàn),就啟動(dòng)丟幀模塊,新的幀率為kn=kn/(tn/t1),按照公式新的kn=25/(500/400),即kn=20幀,每秒產(chǎn)生20幀,采取丟幀方式減少上傳的數(shù)據(jù)量,直到剩余緩存數(shù)據(jù)量的傳送時(shí)間少于預(yù)設(shè)值400ms。若是上述的例子計(jì)算得到當(dāng)前數(shù)據(jù)的傳送時(shí)間為300ms的話,當(dāng)前幀率為20,新的幀率為kn=kn/(tn/t1),按照公式新的kn=20/(300/400),即kn=26幀,因?yàn)閗n>上限k2,kn=k2=25幀。

發(fā)送模塊114,用于若當(dāng)前數(shù)據(jù)的傳送時(shí)間沒(méi)有超過(guò)預(yù)設(shè)值,且?guī)蔬_(dá)到上限,則繼續(xù)從待發(fā)送的隊(duì)列中依序發(fā)送剩余的流媒體格式數(shù)據(jù)。

在一實(shí)施方式中,具體發(fā)送步驟可以舉例如下:

(1)采用rtmp流媒體協(xié)議,已經(jīng)和服務(wù)器進(jìn)行了rtmp協(xié)議的對(duì)接,循環(huán)從發(fā)送隊(duì)列取出一個(gè)帶發(fā)送的流媒體格式的數(shù)據(jù),發(fā)送給流媒體數(shù)據(jù);

(2)服務(wù)器收到客戶單的流媒體的格式的數(shù)據(jù),在分發(fā)給各個(gè)客戶端。

在一實(shí)施方式中,如果計(jì)算得到當(dāng)前數(shù)據(jù)的傳送時(shí)間為150ms,小于預(yù)設(shè)值200ms,則表明當(dāng)前上傳的帶寬充足,為了保證推流終端11的推流質(zhì)量,就停止丟幀,增加幀率,繼續(xù)從待發(fā)送的隊(duì)列中依序發(fā)送剩余的流媒體格式數(shù)據(jù),保證推流業(yè)務(wù)的流暢度,提高觀看終端的觀看體驗(yàn)。

本發(fā)明提供的一種在tcp協(xié)議基礎(chǔ)上的基于推流終端網(wǎng)絡(luò)狀況的優(yōu)化系統(tǒng)10,能實(shí)時(shí)檢測(cè)推流終端的網(wǎng)絡(luò)情況,實(shí)時(shí)了解上行帶寬的變化,從源頭上控制生產(chǎn),減少生產(chǎn)量,減少上傳數(shù)據(jù)量,使客戶可以在推流終端的上行帶寬不佳的情況下,還能流暢的推流,從而極大的提高了用戶的觀看體驗(yàn),當(dāng)檢測(cè)到帶寬逐漸變好時(shí),就停止丟幀,保護(hù)了推流終端推流的質(zhì)量。

以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動(dòng)的情況下,即可以理解并實(shí)施。

通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施方式可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件?;谶@樣的理解,上述技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如rom/ram、磁碟和光盤(pán)等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。

以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
安多县| 北辰区| 琼海市| 万载县| 南召县| 定边县| 陕西省| 成都市| 香格里拉县| 台北县| 汕头市| 宝山区| 邵阳县| 清镇市| 洪湖市| 玉树县| 自治县| 寿宁县| 桐城市| 六盘水市| 阿鲁科尔沁旗| 达州市| 黄龙县| 温宿县| 陕西省| 宜黄县| 南通市| 盘山县| 靖江市| 永年县| 安多县| 林口县| 延庆县| 松潘县| 桃园市| 务川| 湘西| 东乡族自治县| 嘉善县| 赣州市| 调兵山市|