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

一種分布式視頻轉碼的糾錯方法及系統(tǒng)的制作方法

文檔序號:7778713閱讀:255來源:國知局
一種分布式視頻轉碼的糾錯方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明實施例提供一種分布式視頻轉碼的糾錯方法,包括:解封裝服務器將視頻文件解封裝,得到至少一個GOP和至少一個音頻包,為至少一個GOP以及音頻包分配編號;解封裝服務器將GOP和音頻包發(fā)送到轉碼服務器;轉碼服務器檢查收到的GOP和音頻包的正確性;轉碼服務器將正確接收的GOP和音頻包進行轉碼;轉碼服務器將轉碼后的GOP和音頻包發(fā)送到封裝服務器;封裝服務器檢測是否收到了所有的轉碼后的GOP以及音頻包;封裝服務器在檢測收到了所有的轉碼后的GOP以及音頻包后,將轉碼后的GOP以及音頻包封裝為轉碼后的視頻文件。本發(fā)明實施例還提供了相應的糾錯系統(tǒng)。通過本發(fā)明實施例,能夠最大限度地對分布式視頻轉碼的錯誤進行糾正,提高分布式視頻轉碼的正確性。
【專利說明】一種分布式視頻轉碼的糾錯方法及系統(tǒng)
【技術領域】
[0001]本發(fā)明涉及計算機【技術領域】,尤其涉及一種分布式視頻轉碼的糾錯方法及系統(tǒng)?!颈尘凹夹g】
[0002]當有大量視頻需要進行轉換格式時,可以采用多臺單機版的轉碼軟件進行轉碼;而更為高效的辦法是設計一個分布式的轉碼系統(tǒng)進行轉碼。分布式視頻轉碼一般可分為四個步驟進行:a、解封裝,b、視頻解碼編碼,C、音頻解碼編碼,d、封裝。這四個步驟中視頻解碼編碼這一步要耗費整個轉碼過程80%_90%的時間。為了提高轉碼速度,減少轉碼的整體時間最核心的是要減少視頻解碼編碼的處理時間。
[0003]分布式轉碼的思想是利用多臺服務器同時并行對進GOP (Group of Pictures,畫面組)解碼編碼處理,并行處理GOP的服務器越多,整個轉碼過程耗時就越少。為此分布式轉碼系統(tǒng)一般被設計為:一臺服務器負責解封裝,多臺服務器負責處理G0P,一臺服務器負責處理音頻包,一臺服務器負責封裝并輸出目標視頻文件。圖1所示即為分布式轉碼的系統(tǒng)示意圖。
[0004]分布式轉碼的特點是將視頻的解封裝、視頻流編解碼、音頻流編解碼、視頻的封裝分開在多臺服務器上運行的。而且視頻流的編解碼往往會由多臺服務器同時處理。在這些服務器中間數(shù)據(jù)是通過文件在網(wǎng)絡中傳輸?shù)?,這樣就有可能造成數(shù)據(jù)文件在網(wǎng)絡中出錯甚至丟失,不管是出錯還是丟失都會造成目標視頻文件無法輸出。

【發(fā)明內(nèi)容】

[0005]為了解決分布式轉碼文件傳輸錯誤導致轉碼失敗的問題,本發(fā)明實施例提出一種分布式視頻轉碼的糾錯方法和系統(tǒng)。
[0006]本發(fā)明的一個方面,提供一種分布式視頻轉碼的糾錯方法,包括:
[0007]解封裝服務器將視頻文件解封裝,得到至少一個畫面組GOP和至少一個音頻包,為所述至少一個GOP以及音頻包分配編號;
[0008]所述解封裝服務器將所述GOP和所述音頻包發(fā)送到轉碼服務器;
[0009]所述轉碼服務器檢查收到的所述GOP和所述音頻包的正確性;
[0010]所述轉碼服務器將正確接收的GOP和音頻包進行轉碼;
[0011]所述轉碼服務器將轉碼后的GOP和音頻包發(fā)送到封裝服務器;
[0012]所述封裝服務器檢測是否收到了所有的所述轉碼后的GOP以及音頻包;
[0013]所述封裝服務器在檢測收到了所有的所述轉碼后的GOP以及音頻包后,將所述轉碼后的GOP以及音頻包封裝為轉碼后的視頻文件。
[0014]本發(fā)明的另一個方面,提供一種分布式視頻轉碼的糾錯系統(tǒng),包括:
[0015]解封裝服務器、轉碼服務器,以及封裝服務器;
[0016]所述解封裝服務器用于將視頻文件解封裝,得到至少一個畫面組GOP和至少一個音頻包,為所述至少一個GOP以及音頻包分配編號;[0017]所述解封裝服務器還用于將所述GOP和所述音頻包發(fā)送到轉碼服務器;
[0018]所述轉碼服務器用于檢查收到的所述GOP和所述音頻包的正確性;
[0019]所述轉碼服務器還用于將正確接收的GOP和音頻包進行轉碼;
[0020]所述轉碼服務器還用于將轉碼后的GOP和音頻包發(fā)送到封裝服務器;
[0021]所述封裝服務器用于檢測是否收到了所有的所述轉碼后的GOP以及音頻包;
[0022]所述封裝服務器還用于在檢測收到了所有的所述轉碼后的GOP以及音頻包后,將所述轉碼后的GOP以及音頻包封裝為轉碼后的視頻文件。
[0023]使用本發(fā)明實施例公開的分布式視頻轉碼的糾錯方法及系統(tǒng),解封裝服務器會對解碼產(chǎn)生的GOP和音頻包進行編號,轉碼服務器在對GOP和音頻包進行轉碼操作之前會對接收的GOP和音頻包的正確性進行驗證,確保只有正確接收的GOP和音頻包才會被轉碼;與此同時,封裝服務器收到轉碼后的GOP和音頻包之后會對它們的完整性進行驗證,只在確定收到了所有轉碼后的GOP和音頻包之后才進行封裝操作,保證了轉碼后的視頻文件的完整性。通過本發(fā)明實施例中的解封裝服務器、轉碼服務器以及封裝服務器的分工配合,能夠最大限度地對分布式視頻轉碼的錯誤進行糾正,提高分布式視頻轉碼的正確性。
【專利附圖】

【附圖說明】
[0024]圖1所示是一種分布式視頻轉碼的系統(tǒng)示意圖;
[0025]圖2所示是本發(fā)明實施例提供的一種分布式視頻轉碼的糾錯方法的示意圖;
[0026]圖3所示是本發(fā)明實施例提供的一種封裝服務器檢測未收到所有的所述轉碼后的GOP以及音頻包之后的處理方法示意圖;
[0027]圖4所示是本發(fā)明實施例提供的一種分布式視頻轉碼的糾錯系統(tǒng)的結構示意圖?!揪唧w實施方式】
[0028]在本發(fā)明實施例中,解封裝服務器會對解碼產(chǎn)生的GOP和音頻包進行編號,轉碼服務器在對GOP和音頻包進行轉碼操作之前會對接收的GOP和音頻包的正確性進行驗證,確保只有正確接收的GOP和音頻包才會被轉碼;與此同時,封裝服務器收到轉碼后的GOP和音頻包之后會對它們的完整性進行驗證,只在確定收到了所有轉碼后的GOP和音頻包之后才進行封裝操作,保證了轉碼后的視頻文件的完整性。
[0029]以下詳細說明本發(fā)明實施例提供的分布式視頻轉碼的糾錯方法。
[0030]圖2所示為本發(fā)明一個實施例提供的分布式視頻轉碼的糾錯方法示意圖,根據(jù)該圖,詳述各步驟如下:
[0031]步驟201、解封裝服務器將視頻文件解封裝,得到至少一個畫面組GOP和至少一個音頻包,為所述至少一個GOP以及音頻包分配編號;
[0032]步驟202、所述解封裝服務器將所述GOP和所述音頻包發(fā)送到轉碼服務器;
[0033]其中,所述解封裝服務器將所述GOP和所述音頻包發(fā)送到轉碼服務器的同時,還包括:
[0034]備份所述GOP以及所述音頻包。
[0035]步驟203、所述轉碼服務器檢查收到的所述GOP和所述音頻包的正確性;
[0036]其中,所述轉碼服務器檢查收到的所述GOP和所述音頻包的正確性,包括:[0037]所述轉碼服務器根據(jù)預設的數(shù)據(jù)長度檢查所述GOP或者所述音頻包的正確性;
[0038]若所述GOP或者所述音頻包的數(shù)據(jù)長度與所述預設的數(shù)據(jù)長度相符,則所述GOP或者所述音頻包正確接收;
[0039]若所述GOP或者所述音頻包的數(shù)據(jù)長度與所述預設的數(shù)據(jù)長度不相符,則所述GOP或者所述音頻包未正確接收。
[0040]若所述GOP或者所述音頻包未正確接收,還包括:
[0041]所述轉碼服務器丟棄所述未正確接收的GOP或者音頻包。
[0042]在所述轉碼服務器丟棄所述未正確接收的GOP或者音頻包之后,還可以包括:所述轉碼服務器請求所述解封裝服務器重新發(fā)送所述未正確接收的GOP或者音頻包。
[0043]步驟204、所述轉碼服務器將正確接收的GOP和音頻包進行轉碼;
[0044]步驟205、所述轉碼服務器將轉碼后的GOP和音頻包發(fā)送到封裝服務器;
[0045]步驟206、所述封裝服務器檢測是否收到了所有的所述轉碼后的GOP以及音頻包;
[0046]其中,所述封裝服務器檢測是否收到了所有的所述轉碼后的GOP以及音頻包,包括:
[0047]所述封裝服務器定時檢測是否收到了所有的所述轉碼后的GOP以及音頻包。
[0048]步驟207、所述封裝服務器在檢測收到了所有的所述轉碼后的GOP以及音頻包后,將所述轉碼后的GOP以及音頻包封裝為轉碼后的視頻文件。
[0049]其中,圖3所示為封裝服務器檢測未收到所有的所述轉碼后的GOP以及音頻包之后的處理方法示意圖。依據(jù)該圖,介紹該方法如下:
[0050]若所述封裝服務器檢測未收到所有的所述轉碼后的GOP以及音頻包,則:
[0051 ] 步驟301、所述封裝服務器向所述解封裝服務器發(fā)送糾錯請求,所述糾錯請求中包括缺失的GOP或者音頻包的編號;
[0052]其中,所述封裝服務器向所述解封裝服務器發(fā)送糾錯請求,包括:
[0053]所述封裝服務器檢測到缺失的GOP或者音頻包;
[0054]若經(jīng)過預設的時長后仍未收到所述缺失的GOP或者音頻包,則所述封裝服務器向所述解封裝服務器發(fā)送糾錯請求。
[0055]步驟302、所述解封裝服務器根據(jù)所述缺失的GOP或者音頻包的編號在所述備份的GOP或者音頻包中提取缺失的GOP或者音頻包;
[0056]步驟303、所述解封裝服務器將所述缺失的GOP或者音頻包發(fā)送到所述轉碼服務器;
[0057]步驟304、所述轉碼服務器將所述缺失的GOP或者音頻包進行轉碼;
[0058]步驟305、所述轉碼服務器將所述轉碼后的GOP或者音頻包發(fā)送到封裝服務器;
[0059]步驟306、所述封裝服務器在檢測收到了所有的所述轉碼后的GOP以及音頻包后,將所述轉碼后的GOP以及音頻包封裝為轉碼后的視頻文件。
[0060]使用本發(fā)明實施例公開的分布式視頻轉碼的糾錯方法,解封裝服務器會對解碼產(chǎn)生的GOP和音頻包進行編號,轉碼服務器在對GOP和音頻包進行轉碼操作之前會對接收的GOP和音頻包的正確性進行驗證,確保只有正確接收的GOP和音頻包才會被轉碼;與此同時,封裝服務器收到轉碼后的GOP和音頻包之后會對它們的完整性進行驗證,只在確定收到了所有轉碼后的GOP和音頻包之后才進行封裝操作,保證了轉碼后的視頻文件的完整性。通過本發(fā)明實施例中的解封裝服務器、轉碼服務器以及封裝服務器的分工配合,能夠最大限度地對分布式視頻轉碼的錯誤進行糾正,提高分布式視頻轉碼的正確性。
[0061]以下介紹一種分布式視頻轉碼的糾錯系統(tǒng),用以執(zhí)行前述實施例中公開的分布式視頻轉碼的糾錯方法。
[0062]圖4所示為本發(fā)明一個實施例提供的一種分布式視頻轉碼的糾錯系統(tǒng)的結構示意圖。依據(jù)該圖,詳述系統(tǒng)中的各組成部分以及各自的作用如下:
[0063]本發(fā)明實施例提供的分布式視頻轉碼的糾錯系統(tǒng)包括:解封裝服務器401、轉碼服務器402,以及封裝服務器403。其中,轉碼服務器402的個數(shù)至少為一個。
[0064]所述解封裝服務器401用于將視頻文件解封裝,得到至少一個畫面組GOP和至少一個音頻包,為所述至少一個GOP以及音頻包分配編號;
[0065]所述解封裝服務器401還用于將所述GOP和所述音頻包發(fā)送到轉碼服務器;
[0066]所述解封裝服務器401將所述GOP和所述音頻包發(fā)送到轉碼服務器的同時,還用于:
[0067]備份所述GOP以及所述音頻包。
[0068]所述轉碼服務器402用于檢查收到的所述GOP和所述音頻包的正確性;
[0069]其中,所述轉碼服務器402檢查收到的所述GOP和所述音頻包的正確性,包括:
[0070]所述轉碼服務器根據(jù)預設的數(shù)據(jù)長度檢查所述GOP或者所述音頻包的正確性;
[0071]若所述GOP或者所述音頻包的數(shù)據(jù)長度與所述預設的數(shù)據(jù)長度相符,則所述GOP或者所述音頻包正確接收;
[0072]若所述GOP或者所述音頻包的數(shù)據(jù)長度與所述預設的數(shù)據(jù)長度不相符,則所述GOP或者所述音頻包未正確接收。
[0073]若所述GOP或者所述音頻包未正確接收,所述轉碼服務器402還用于:
[0074]丟棄所述未正確接收的GOP或者音頻包。
[0075]所述轉碼服務器402還用于將正確接收的GOP和音頻包進行轉碼;
[0076]所述轉碼服務器402還用于將轉碼后的GOP和音頻包發(fā)送到封裝服務器;
[0077]所述封裝服務器403用于檢測是否收到了所有的所述轉碼后的GOP以及音頻包;
[0078]所述封裝服務器403還用于在檢測收到了所有的所述轉碼后的GOP以及音頻包后,將所述轉碼后的GOP以及音頻包封裝為轉碼后的視頻文件。
[0079]若所述封裝服務器403檢測未收到所有的所述轉碼后的GOP以及音頻包,則:
[0080]所述封裝服務器還用于向所述解封裝服務器發(fā)送糾錯請求,所述糾錯請求中包括缺失的GOP或者音頻包的編號;
[0081]所述解封裝服務器還用于根據(jù)所述缺失的GOP或者音頻包的編號在所述備份的GOP或者音頻包中提取缺失的GOP或者音頻包;
[0082]所述解封裝服務器還用于將所述缺失的GOP或者音頻包發(fā)送到所述轉碼服務器;
[0083]所述轉碼服務器還用于將所述缺失的GOP或者音頻包進行轉碼;
[0084]所述轉碼服務器還用于將所述轉碼后的GOP或者音頻包發(fā)送到封裝服務器;
[0085]所述封裝服務器還用于在檢測收到了所有的所述轉碼后的GOP以及音頻包后,將所述轉碼后的GOP以及音頻包封裝為轉碼后的視頻文件。
[0086]使用本發(fā)明實施例公開的分布式視頻轉碼的糾錯系統(tǒng),解封裝服務器會對解碼產(chǎn)生的GOP和音頻包進行編號,轉碼服務器在對GOP和音頻包進行轉碼操作之前會對接收的GOP和音頻包的正確性進行驗證,確保只有正確接收的GOP和音頻包才會被轉碼;與此同時,封裝服務器收到轉碼后的GOP和音頻包之后會對它們的完整性進行驗證,只在確定收到了所有轉碼后的GOP和音頻包之后才進行封裝操作,保證了轉碼后的視頻文件的完整性。通過本發(fā)明實施例中的解封裝服務器、轉碼服務器以及封裝服務器的分工配合,能夠最大限度地對分布式視頻轉碼的錯誤進行糾正,提高分布式視頻轉碼的正確性。
[0087]本領域普通技術人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成,前述的程序可以存儲于可讀取存儲介質中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質包括:R0M、RAM、磁碟、光盤、網(wǎng)絡節(jié)點、調度器等各種可以存儲程序代碼的介質。
[0088]最后應說明的是:以上僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,盡管參照前述實施例對本發(fā)明進行了詳細的說明,對于本領域的技術人員來說,其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
【權利要求】
1.一種分布式視頻轉碼的糾錯方法,其特征在于,包括: 解封裝服務器將視頻文件解封裝,得到至少一個畫面組GOP和至少一個音頻包,為所述至少一個GOP以及音頻包分配編號; 所述解封裝服務器將所述GOP和所述音頻包發(fā)送到轉碼服務器; 所述轉碼服務器檢查收到的所述GOP和所述音頻包的正確性; 所述轉碼服務器將正確接收的GOP和音頻包進行轉碼; 所述轉碼服務器將轉碼后的GOP和音頻包發(fā)送到封裝服務器; 所述封裝服務器檢測是否收到了所有的所述轉碼后的GOP以及音頻包; 所述封裝服務器在檢測收到了所有的所述轉碼后的GOP以及音頻包后,將所述轉碼后的GOP以及音頻包封裝為轉碼后的視頻文件。
2.根據(jù)權利要求1所述的方法,其特征在于,所述解封裝服務器將所述GOP和所述音頻包發(fā)送到轉碼服務器的同時,還包括: 備份所述GOP以及所述音頻包。
3.根據(jù)權利要求2所述的方法,其特征在于,若所述封裝服務器檢測未收到所有的所述轉碼后的GOP以及 音頻包,則: 所述封裝服務器向所述解封裝服務器發(fā)送糾錯請求,所述糾錯請求中包括缺失的GOP或者音頻包的編號; 所述解封裝服務器根據(jù)所述缺失的GOP或者音頻包的編號在所述備份的GOP或者音頻包中提取缺失的GOP或者音頻包; 所述解封裝服務器將所述缺失的GOP或者音頻包發(fā)送到所述轉碼服務器; 所述轉碼服務器將所述缺失的GOP或者音頻包進行轉碼; 所述轉碼服務器將所述轉碼后的GOP或者音頻包發(fā)送到封裝服務器; 所述封裝服務器在檢測收到了所有的所述轉碼后的GOP以及音頻包后,將所述轉碼后的GOP以及音頻包封裝為轉碼后的視頻文件。
4.根據(jù)權利要求3所述的方法,其特征在于,所述封裝服務器向所述解封裝服務器發(fā)送糾錯請求,包括: 所述封裝服務器檢測到缺失的GOP或者音頻包; 若經(jīng)過預設的時長后仍未收到所述缺失的GOP或者音頻包,則所述封裝服務器向所述解封裝服務器發(fā)送糾錯請求。
5.根據(jù)權利要求1-4中任一項所述的方法,其特征在于,所述封裝服務器檢測是否收到了所有的所述轉碼后的GOP以及音頻包,包括: 所述封裝服務器定時檢測是否收到了所有的所述轉碼后的GOP以及音頻包。
6.根據(jù)權利要求1所述的方法,其特征在于,所述轉碼服務器檢查收到的所述GOP和所述音頻包的正確性,包括: 所述轉碼服務器根據(jù)預設的數(shù)據(jù)長度檢查所述GOP或者所述音頻包的正確性; 若所述GOP或者所述音頻包的數(shù)據(jù)長度與所述預設的數(shù)據(jù)長度相符,則所述GOP或者所述音頻包正確接收; 若所述GOP或者所述音頻包的數(shù)據(jù)長度與所述預設的數(shù)據(jù)長度不相符,則所述GOP或者所述音頻包未正確接收。
7.根據(jù)權利要求6所述的方法,其特征在于,若所述GOP或者所述音頻包未正確接收,還包括: 所述轉碼服務器丟棄所述未正確接收的GOP或者音頻包。
8.根據(jù)權利要求7所述的方法,其特征在于,還包括: 所述轉碼服務器請求所述解封裝服務器重新發(fā)送所述未正確接收的GOP或者音頻包。
9.一種分布式視頻轉碼的糾錯系統(tǒng),其特征在于,包括: 解封裝服務器、轉碼服務器,以及封裝服務器; 所述解封裝服務器用于將視頻文件解封裝,得到至少一個畫面組GOP和至少一個音頻包,為所述至少一個GOP以及音頻包分配編號; 所述解封裝服務器還用于將所述GOP和所述音頻包發(fā)送到轉碼服務器; 所述轉碼服務器用于檢查收到的所述GOP和所述音頻包的正確性; 所述轉碼服務器還用于將正確接收的GOP和音頻包進行轉碼; 所述轉碼服務器還用于將轉碼后的GOP和音頻包發(fā)送到封裝服務器; 所述封裝服務器用于檢測是否收到了所有的所述轉碼后的GOP以及音頻包; 所述封裝服務器還用于在檢測收到了所有的所述轉碼后的GOP以及音頻包后,將所述轉碼后的GOP以及音頻包封裝為轉碼后的視頻文件。
10.根據(jù)權利要求9所述的系統(tǒng)`,其特征在于,所述解封裝服務器將所述GOP和所述音頻包發(fā)送到轉碼服務器的同時,還用于: 備份所述GOP以及所述音頻包。
11.根據(jù)權利要求10所述的系統(tǒng),其特征在于,若所述封裝服務器檢測未收到所有的所述轉碼后的GOP以及音頻包,則: 所述封裝服務器還用于向所述解封裝服務器發(fā)送糾錯請求,所述糾錯請求中包括缺失的GOP或者音頻包的編號; 所述解封裝服務器還用于根據(jù)所述缺失的GOP或者音頻包的編號在所述備份的GOP或者音頻包中提取缺失的GOP或者音頻包; 所述解封裝服務器還用于將所述缺失的GOP或者音頻包發(fā)送到所述轉碼服務器; 所述轉碼服務器還用于將所述缺失的GOP或者音頻包進行轉碼; 所述轉碼服務器還用于將所述轉碼后的GOP或者音頻包發(fā)送到封裝服務器; 所述封裝服務器還用于在檢測收到了所有的所述轉碼后的GOP以及音頻包后,將所述轉碼后的GOP以及音頻包封裝為轉碼后的視頻文件。
12.根據(jù)權利要求9-11中任一項所述的系統(tǒng),其特征在于,所述轉碼服務器檢查收到的所述GOP和所述音頻包的正確性,包括: 所述轉碼服務器根據(jù)預設的數(shù)據(jù)長度檢查所述GOP或者所述音頻包的正確性; 若所述GOP或者所述音頻包的數(shù)據(jù)長度與所述預設的數(shù)據(jù)長度相符,則所述GOP或者所述音頻包正確接收; 若所述GOP或者所述音頻包的數(shù)據(jù)長度與所述預設的數(shù)據(jù)長度不相符,則所述GOP或者所述音頻包未正確接收。
13.根據(jù)權利要求12所述的系統(tǒng),其特征在于,若所述GOP或者所述音頻包未正確接收,所述轉碼服務器還用于:丟棄所述未正確接收的GOP或者音頻包。
14.根據(jù)權利要求 9所述的系統(tǒng),其特征在于,所述轉碼服務器的個數(shù)為至少一個。
【文檔編號】H04N19/89GK103634578SQ201310637085
【公開日】2014年3月12日 申請日期:2013年12月2日 優(yōu)先權日:2013年12月2日
【發(fā)明者】張金良 申請人:天脈聚源(北京)傳媒科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
长汀县| 新津县| 临朐县| 河西区| 苏尼特左旗| 托克托县| 铜陵市| 准格尔旗| 竹溪县| 南康市| 云龙县| 霸州市| 连城县| 仙桃市| 修武县| 漯河市| 平原县| 独山县| 龙里县| 佛冈县| 沁水县| 大新县| 灵寿县| 濮阳县| 永兴县| 夏河县| 金寨县| 布尔津县| 安化县| 清流县| 太仆寺旗| 新丰县| 利川市| 厦门市| 汾阳市| 涞源县| 永川市| 耿马| 宁津县| 灵武市| 抚松县|