中文字幕在线视频第一页,黄色毛片在线看,日本爱爱网站,亚洲系列中文字幕一区二区

您當(dāng)前的位置是:  首頁(yè) > 資訊 > 文章精選 >
 首頁(yè) > 資訊 > 文章精選 >

從通信到AI FreeSWITCH與WebRTC

2019-03-25 09:11:03   作者:杜金房   來(lái)源: LiveVideoStack公眾微信號(hào)   評(píng)論:0  點(diǎn)擊:


  FreeSWITCH是一個(gè)開(kāi)源的軟交換平臺(tái),具有模塊化結(jié)構(gòu),支持包括WebRTC在內(nèi)的多種互通互聯(lián)。本文來(lái)自FreeSWITCH 中文社區(qū)創(chuàng)始人杜金房在LiveVideoStack線(xiàn)上交流分享中的演講,詳細(xì)介紹了FreeSWITCH的功能特性、架構(gòu)以及現(xiàn)狀。
  大家好,我是杜金房,此次分享和雙向通訊服務(wù)器FreeSWITCH以及WebRTC有關(guān)。首先我會(huì)為大家簡(jiǎn)單介紹FreeSWITCH,鑒于FreeSWITCH主要用于通信領(lǐng)域,我也會(huì)介紹WebRTC并闡述FreeSWITCH與WebRTC的關(guān)系,同時(shí)結(jié)合FreeSWITCH的其他功能和使用場(chǎng)景與其功能以及所使用的多媒體庫(kù),進(jìn)一步探索AI技術(shù)加持下FreeSWITCH的未來(lái)發(fā)展。
  1. FreeSWITCH簡(jiǎn)介
  FreeSWITCH是一套開(kāi)源的,集成強(qiáng)大多媒體引擎的軟交換系統(tǒng)。FreeSWITCH主要基于C語(yǔ)言編寫(xiě),集成的眾多方便靈活的開(kāi)發(fā)接口使其具有出色的互聯(lián)互通的能力,不僅兼容各種手機(jī)電話(huà)等終端設(shè)備并與各類(lèi)軟件相互對(duì)接,也提供了對(duì)多種應(yīng)用場(chǎng)景如電話(huà)通信、視頻會(huì)議的支持。根據(jù)FreeSWITCH官方給出的數(shù)據(jù),F(xiàn)reeSWITCH已成功被應(yīng)用于通信運(yùn)營(yíng)、在線(xiàn)教育、視頻會(huì)議與設(shè)備互聯(lián)網(wǎng)關(guān)等。
  說(shuō)到開(kāi)源,想必大家不會(huì)對(duì)上圖展示的這些Logo感到陌生,包括像Linux、Android這樣的開(kāi)源操作系統(tǒng),MySQL等開(kāi)源數(shù)據(jù)庫(kù)以及APACHE這樣的開(kāi)源Web服務(wù)器。而通信領(lǐng)域也有兩個(gè)較具有代表性的開(kāi)源軟件:Asterisk與這次重點(diǎn)介紹的FreeSWITCH。
  2. 通信發(fā)展
  其實(shí)在誕生初期FreeSWITCH主要被用來(lái)解決使用RJ11接口,基于電路交換原理實(shí)現(xiàn)的模擬電話(huà)機(jī)等傳統(tǒng)電話(huà)通信問(wèn)題;隨著數(shù)字技術(shù)的發(fā)展,使用RJ45接口/Wi-Fi,基于分組交換的IP通信與在此基礎(chǔ)上進(jìn)一步升級(jí)的視頻電話(huà)逐漸普及,成為過(guò)去十年人們溝通交流所使用最為頻繁的工具;同時(shí)由于互聯(lián)網(wǎng)技術(shù)的突飛猛進(jìn),越來(lái)越多的人有機(jī)會(huì)享用海量網(wǎng)絡(luò)資源,基于互聯(lián)網(wǎng)傳輸實(shí)現(xiàn)的各種實(shí)時(shí)通訊APP應(yīng)運(yùn)而生。


  從古代的烽火臺(tái)與語(yǔ)言交流到近現(xiàn)代的模擬電話(huà),再到現(xiàn)如今人們?cè)偈煜げ贿^(guò)的數(shù)字電話(huà),通信的進(jìn)步可以說(shuō)與社會(huì)生產(chǎn)力進(jìn)步與人類(lèi)文明發(fā)展密不可分。傳統(tǒng)的模擬電話(huà)通過(guò)傳輸模擬信號(hào)實(shí)現(xiàn)遠(yuǎn)距離聲音傳輸,而隨著傳輸距離的增大與傳輸條件的變化,模擬信號(hào)會(huì)在傳輸過(guò)程中遭受明顯衰減,這就需要安裝在接收端的信號(hào)放大器處理接收到的模擬信號(hào)從而使其中的關(guān)鍵信息更容易被獲;但這樣做并非完美,放大聲音的同時(shí)如噪音、呼吸聲等環(huán)境雜音也會(huì)被放大,間接導(dǎo)致有效信號(hào)比率降低,直接帶來(lái)的影響便是遠(yuǎn)距離的通話(huà)雙方無(wú)法清晰而準(zhǔn)確地拾取對(duì)方所要表達(dá)的關(guān)鍵信息。
  為了滿(mǎn)足遠(yuǎn)距離通信數(shù)據(jù)傳輸?shù)挠行В瑪?shù)字通訊技術(shù)應(yīng)運(yùn)而生。數(shù)字通訊可實(shí)現(xiàn)在進(jìn)行遠(yuǎn)距離傳輸?shù)耐瑫r(shí)幾乎不損失通話(huà)質(zhì)量,從傳統(tǒng)的電話(huà)機(jī)到大家使用的第一款GSM手機(jī)再到現(xiàn)在的智能手機(jī),可以說(shuō)數(shù)字通訊極大改善了人們遠(yuǎn)距離溝通交流的方式。與此同時(shí),從最早的撥號(hào)電話(huà)、GSM手機(jī)到3G、4G以至于未來(lái)的5G,通信技術(shù)的發(fā)展也可謂突飛猛進(jìn)。通信技術(shù)的迭代也帶來(lái)了互聯(lián)網(wǎng)技術(shù)的飛躍。例如在4G/LTE誕生之前,由于通信所使用的網(wǎng)絡(luò)通道與網(wǎng)絡(luò)傳輸所使用的并不相同,用戶(hù)無(wú)法在打電話(huà)的同時(shí)訪(fǎng)問(wèn)互聯(lián)網(wǎng);而對(duì)4G/LTE而言,包括語(yǔ)音電話(huà)與訪(fǎng)問(wèn)互聯(lián)網(wǎng)在內(nèi)的所有通訊活動(dòng)都通過(guò)IP網(wǎng)絡(luò)傳輸數(shù)據(jù),這就避免了打電話(huà)與訪(fǎng)問(wèn)互聯(lián)網(wǎng)的沖突。
  FreeSWITCH是一個(gè)開(kāi)源的軟交換系統(tǒng),所謂的軟交換是指不考慮終端類(lèi)型,所有話(huà)機(jī)都可以通過(guò)FreeSWITCH與其他設(shè)備互聯(lián)互通。上圖中展示的終端除了有電話(huà)、手機(jī),還有監(jiān)控?cái)z像頭、視頻電話(huà)甚至RTMP、Flash等等。FreeSWITCH的特點(diǎn)就是可對(duì)接任何設(shè)備,例如通過(guò)瀏覽器可實(shí)現(xiàn)WebRTC與FreeSWITCH之間的通信,從而允許用戶(hù)通過(guò)瀏覽器撥打電話(huà)。
  3. WebRTC風(fēng)生水起
  早期實(shí)現(xiàn)瀏覽器撥打電話(huà)一般需要ActiveX技術(shù)的輔助,這是IE上的一個(gè)插件系統(tǒng);與此類(lèi)似的還有Flash,同樣可以實(shí)現(xiàn)互聯(lián)網(wǎng)電話(huà)的功能,但由于Flash的功耗過(guò)大,支持Flash的移動(dòng)端設(shè)備越來(lái)越少,F(xiàn)lash也就此沒(méi)落;Flash日漸式微而WebRTC風(fēng)生水起,WebRTC可以說(shuō)完美解決了Web端的雙向通訊活動(dòng)問(wèn)題。最早的Web都是通過(guò)從服務(wù)器加載網(wǎng)頁(yè)實(shí)現(xiàn)單向通訊,隨著WebRTC的誕生,諸如視頻直播等雙向通訊活動(dòng)也成為可能,現(xiàn)在支持WebRTC的瀏覽器包括Chrome、FireFox、Opera與Edge等。
  WebRTC并非一項(xiàng)全新的技術(shù)而是多種技術(shù)的加成結(jié)果,包括音視頻編解碼技術(shù)、用于避免通話(huà)回聲的回聲消除技術(shù)、降噪技術(shù)、流媒體傳輸技術(shù)、NAT穿透技術(shù),當(dāng)然還有用戶(hù)普遍關(guān)心的安全技術(shù)等等,較為典型的安全解決方案是HTTPS/WSS,其中的HTTPS超文本傳輸安全協(xié)議用于安全傳輸數(shù)據(jù)并驗(yàn)證數(shù)據(jù)來(lái)源的可靠,而WSS(WebSocket)則是HTTP基礎(chǔ)上的升級(jí),借助雙向的Socket通信解決了基于UDP并使用RTP傳輸協(xié)議交換數(shù)據(jù)的安全性問(wèn)題。
  WebRTC不僅被用于Web,同樣也被用于移動(dòng)端尤其是各種APP,WebRTC在移動(dòng)端的普及也讓音視頻編解碼、回聲消除等技術(shù)在移動(dòng)端大放異彩。我們知道WebRTC標(biāo)準(zhǔn)的最早提出者是Google,下一代WebRTC標(biāo)準(zhǔn)是WebRTC 2.0,又稱(chēng)ORTC(Object RTC)。對(duì)比ORTC與WebRTC,二者主要在媒體的描述方式上有較為明顯的差別。WebRTC 1.0的描述基于SDP,通過(guò)文本描述媒體特性;而ORTC則直接使用一個(gè)對(duì)象描述媒體。
  需要注意的是,WebRTC僅是一個(gè)媒體層標(biāo)準(zhǔn)而并沒(méi)有規(guī)定信令,傳輸媒體至客戶(hù)端需要信令來(lái)確定數(shù)據(jù)的傳輸路徑與終端。以Chrome瀏覽器為例,其中被稱(chēng)為GetUserMedia 的API被用于獲取用戶(hù)媒體,所產(chǎn)生的SDP描述了相關(guān)音頻與視頻文件。具體過(guò)程是:首先瀏覽器發(fā)送SDP的同時(shí)也會(huì)獲取一個(gè)SDP,此發(fā)送的SDP會(huì)從GetUserMedia端獲得相應(yīng)視頻,信令的作用是實(shí)現(xiàn)SDP的交換。WebRTC解決了點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)連接與通信傳輸PeerConnection面臨的端口匹配、編解碼等問(wèn)題。信令主要用于交換SDP,PeerConnection點(diǎn)對(duì)點(diǎn)連接與DataChannel數(shù)據(jù)信道用于傳輸媒體。
  SIP是通信領(lǐng)域中的一個(gè)標(biāo)準(zhǔn)信令,想必在通信運(yùn)營(yíng)商工作的朋友不會(huì)對(duì)此感到陌生。上圖展示了SIP信令的具體流程:假設(shè)左側(cè)A、右側(cè)B兩位用戶(hù)進(jìn)行通信活動(dòng),A會(huì)給B發(fā)送INVITE,INVITE中包含A端主叫號(hào)碼與B端被叫號(hào)碼,同時(shí)INVITE里包括了用于描述音視頻等媒體信息的SDP;當(dāng)INVITE發(fā)送至B端后,B端會(huì)給A端回復(fù)100 Trying表示成功接收INVITE,同時(shí)回復(fù)180 Ringing表示B端振鈴并給A端反饋回鈴聲讓A端用戶(hù)知道B端已接收到通話(huà)請(qǐng)求;當(dāng)B端用戶(hù)拿起電話(huà)接通時(shí),B端會(huì)發(fā)送200 OK,切斷回鈴聲以告知A端用戶(hù)通話(huà)連接成功,雙方正式開(kāi)始進(jìn)行通話(huà);圖中的ACK全稱(chēng)Acknowledgement,INVITE、200 OK、ACK可視為一組三次握手過(guò)程,同時(shí)也意味著成功建立了媒體數(shù)據(jù)傳輸;RTP Data代表雙方進(jìn)行音視頻通話(huà)時(shí)數(shù)據(jù)的交換,一旦在通信過(guò)程中有一方(B端)掛斷電話(huà),主動(dòng)掛斷的一方(B端)會(huì)發(fā)送BYE至另一方(A方)以告知通話(huà)結(jié)束,同時(shí)被掛斷一方(A端)向?qū)Ψ剑˙端)發(fā)送200 OK確認(rèn)通話(huà)掛斷,通話(huà)活動(dòng)結(jié)束。SIP信令與HTTP相比在包括文本消息等方面都較為相似,相對(duì)于SIP,HTTP只通過(guò)一個(gè)Get請(qǐng)求就可得到200 OK。
  4. FreeSWITCH與WebRTC
  FreeSWITCH實(shí)現(xiàn)了兩種信令:基于現(xiàn)有標(biāo)準(zhǔn)的SIP與基于WebSocket和JSON的非標(biāo)準(zhǔn)信令Verto。在絕大多數(shù)情況下,瀏覽器端的數(shù)據(jù)主要通過(guò)UDP和TCP傳輸,SIP不直接傳輸數(shù)據(jù)而是承載于UDP或TCP之上;加之雖然UDP的適用范圍更廣但傳輸較為麻煩,于是由HTTP基礎(chǔ)上升級(jí)而來(lái)的WebSocket協(xié)議成為了另一種選擇。FreeSWITCH中有在WebSocket基礎(chǔ)上加入Web協(xié)議實(shí)現(xiàn)的SIP over WebSocket,但由于SIP主要是為傳統(tǒng)通話(huà)設(shè)計(jì),對(duì)于電腦與移動(dòng)互聯(lián)網(wǎng)設(shè)備來(lái)說(shuō)過(guò)于臃腫;隨后FreeSWITCH又出現(xiàn)了一種被稱(chēng)為Verto的非標(biāo)準(zhǔn)信令,主要基于WebSocket,信令格式為Json。無(wú)論使用以上兩種信令中的哪一種作為信令,成功進(jìn)行SDP交換之后FreeSWITCH就可以實(shí)現(xiàn)和Chrome的通信了。
  FreeSWITCH可以實(shí)現(xiàn)萬(wàn)物互聯(lián),以至于我們探索了基于FreeSWITCH實(shí)現(xiàn)的微信小程序之間的通信并成功構(gòu)建了雙向RTMP通信。我們?cè)贔reeSWITCH內(nèi)部寫(xiě)入了一個(gè)模塊便于所有設(shè)備與FreeSWITCH建立通信,從而實(shí)現(xiàn)如果有任何一方接入通信至FreeSWITCH,與FreeSWITCH連接的其他所有設(shè)備都可同步進(jìn)行通信。例如通過(guò)微信你可以看到家中IP攝像頭的監(jiān)控畫(huà)面,也可即時(shí)加入視頻會(huì)議;視頻會(huì)議不僅可以通過(guò)專(zhuān)業(yè)設(shè)備舉行,也可以通過(guò)Chrome等瀏覽器傳輸,這種互聯(lián)互通的特性可以說(shuō)是FreeSWITCH的最明顯特性。
  當(dāng)然不同的廠商為了追求利益的最大化,都會(huì)努力實(shí)現(xiàn)開(kāi)源的FreeSWITCH對(duì)全平臺(tái)的兼容。除了我們之前分享的SIP信令,F(xiàn)reeSWITCH中還有一種被稱(chēng)為H.323的信令,H.323信令主要被用于早期的IP話(huà)機(jī)與視頻會(huì)議設(shè)備,而由于SIP的互通性能更出色,現(xiàn)在絕大多數(shù)設(shè)備都放棄了對(duì)H.323的支持。H.323協(xié)議基于二進(jìn)制而SIP則是基于文本,相對(duì)于前者具有更好的可定制性。Flash與RTMP都是Adobe提出的協(xié)議,對(duì)比二者RTMP的綜合性能更加優(yōu)秀。包括現(xiàn)在的許多互聯(lián)網(wǎng)直播推流拉流、微信小程序等都因?yàn)槠浞(wěn)定可靠而使用RTMP協(xié)議,相對(duì)于WebRTC,RTMP應(yīng)用也較為方便。在這里我們并不是說(shuō)某一種協(xié)議擁有絕對(duì)優(yōu)勢(shì),我們應(yīng)當(dāng)按照實(shí)際需求與產(chǎn)品特性選擇最適合的協(xié)議。
  5. 其他功能與使用場(chǎng)景
  FreeSWITCH可被用于實(shí)現(xiàn)多屏視頻會(huì)議,甚至可以實(shí)現(xiàn)8x8的畫(huà)面部署。


  無(wú)論是使用FreeSWITCH還是傳統(tǒng)的WebRTC,實(shí)現(xiàn)視頻會(huì)議都離不開(kāi)以下三種控制策略:Mesh、MCU與SFU。Mesh是單純的點(diǎn)對(duì)點(diǎn)連接形成的網(wǎng)狀結(jié)構(gòu)且不需要服務(wù)器,由于每個(gè)節(jié)點(diǎn)都需編碼傳輸多路,非常浪費(fèi)帶寬與運(yùn)算資源;MCU則被FreeSWITCH所采用,也就是通過(guò)中間的多點(diǎn)控制單元收集各方傳來(lái)的音視頻數(shù)據(jù)并發(fā)送至FreeSWITCH,由FreeSWITCH將多路音視頻信號(hào)整理合成為一路包含所有畫(huà)面的音視頻流并傳輸給每一個(gè)用戶(hù),每個(gè)節(jié)點(diǎn)僅與多點(diǎn)控制單元進(jìn)行數(shù)據(jù)交換,所消耗的帶寬與運(yùn)算資源也會(huì)明顯減少;當(dāng)然這樣做相當(dāng)于是把包括編解碼在內(nèi)的大量運(yùn)算任務(wù)交給FreeSWITCH完成,這就要求FreeSWITCH集成CPU與足夠的帶寬資源。
  SFU也就是選擇性轉(zhuǎn)發(fā)單元是第三種實(shí)現(xiàn)視頻會(huì)議的方式。如上圖最右側(cè)展示的那樣,如果有五方進(jìn)行視頻會(huì)議,首先所有人都需要將自己這段的音視頻信號(hào)傳輸至中間的選擇性轉(zhuǎn)發(fā)單元,SFU會(huì)按照會(huì)議需求選擇性轉(zhuǎn)發(fā)信號(hào)至每一個(gè)用戶(hù)。相對(duì)于MCU,不處理編解碼任務(wù)的SFU節(jié)省了一部分CPU運(yùn)算資源,但代價(jià)是帶寬消耗明顯提高,總而言之,實(shí)現(xiàn)FreeSWITCH的前提是使用MCU。
  如果具體來(lái)說(shuō)MCU在FreeSWITCH中的作用便是如上圖展示的那樣:黑色箭頭代表下發(fā),紅色箭頭代表上行;假設(shè)這里有四臺(tái)設(shè)備分別輸入的畫(huà)面為1、2、3、4,現(xiàn)在我們將這四路畫(huà)面?zhèn)鬏斨罠reeSwitch的MCU設(shè)備,經(jīng)過(guò)MCU的縮放、拼接、合成一路等一系列處理,我們得到了一個(gè)由四方畫(huà)面拼接而成的會(huì)議畫(huà)面;此時(shí)每個(gè)用戶(hù)看到的畫(huà)面都是視頻融屏后的結(jié)果,同時(shí)看到四個(gè)畫(huà)面且完全一致。
  多畫(huà)布是FreeSWITCH的另一項(xiàng)功能,此功能多用于大型會(huì)議現(xiàn)場(chǎng)。有些應(yīng)用場(chǎng)景需要主講人與觀眾看到兩個(gè)不同的畫(huà)面,例如講師看到的是觀眾的反應(yīng)而觀眾則看到的是演示文稿或者會(huì)場(chǎng)實(shí)況,這就需要構(gòu)建兩個(gè)畫(huà)布或多個(gè)畫(huà)布,按照每位觀看者的需求向其投送需要的畫(huà)面。
  集群也是FreeSWITCH上較為常用的功能,實(shí)現(xiàn)起來(lái)也比較復(fù)雜。集群多用于擴(kuò)展會(huì)議規(guī)模,當(dāng)然這需要多臺(tái)服務(wù)器的集中處理。
  FreeSWITCH也支持非常豐富的多媒體編碼,包括音頻領(lǐng)域的PCMA、PCMU,瀏覽器中常用且適應(yīng)性較的OPUS,當(dāng)然還有常見(jiàn)的H.264、H.263、VP8、VP9等視頻編碼標(biāo)準(zhǔn)。
  傳統(tǒng)語(yǔ)音電話(huà)領(lǐng)域也有借助FreeSWITCH的力量提升用戶(hù)體驗(yàn)的案例,如互動(dòng)式語(yǔ)音應(yīng)答IVR。上圖展示的就是一個(gè)較為趣味的場(chǎng)景,通過(guò)簡(jiǎn)單的編程定義每個(gè)操作所觸發(fā)的活動(dòng),從而實(shí)現(xiàn)互動(dòng)語(yǔ)音應(yīng)答與響應(yīng)。
  除了前面介紹的應(yīng)用,F(xiàn)reeSWITCH在其他方面的應(yīng)用如上圖展示的那樣,可以說(shuō)FreeSWITCH的應(yīng)用范圍十分廣泛。
  6. FreeSWITCH所使用的多媒體庫(kù)
  FreeSWITCH可以用到的多媒體庫(kù)有用于處理各種音視頻文件的Libsndfile、處理VP8、VP9的libvpx、處理圖像的libpng與Imagemagick,當(dāng)然還有處理各種音視頻文件的FFmpeg與用于計(jì)算機(jī)視覺(jué)的OpenCV。
  7. AI賦能
  盡管FreeSWITCH本身不能實(shí)現(xiàn)AI,但這并不妨礙AI為FreeSWITCH處理音視頻賦能。FreeSWITCH內(nèi)部有一些可用于語(yǔ)音識(shí)別/語(yǔ)音文本互轉(zhuǎn)的ASR/TTS模塊,借助這些模塊FreeSWITCH可把收集到的音頻信號(hào)傳至多輪人機(jī)對(duì)話(huà)系統(tǒng)。除此之外,人臉識(shí)別、ChromaKey也是較為常見(jiàn)的應(yīng)用方向。
  其中ChromaKey就是虛擬演播室,通過(guò)綠幕技術(shù)替換主播環(huán)境的背景等元素,極大豐富了產(chǎn)品視聽(tīng)體驗(yàn)。
  當(dāng)然這些功能的實(shí)現(xiàn)離不開(kāi)Media Bug媒體監(jiān)聽(tīng)。例如Alice與Bob通話(huà)時(shí)Carl端通過(guò)類(lèi)似于三通的路徑監(jiān)聽(tīng)二者通話(huà),并在需要時(shí)加入ChromeKey等處理。
  8. 總結(jié)與展望
  總結(jié)以上分享內(nèi)容,F(xiàn)reeSWITCH是一個(gè)開(kāi)源的軟交換平臺(tái),具有模塊化結(jié)構(gòu),實(shí)現(xiàn)了對(duì)包括WebRTC在內(nèi)的各種互聯(lián)互通的良好支持與新特性的部署;同時(shí)也易與各種AI平臺(tái)交互對(duì)接,并能作為處理多媒體的服務(wù)器使用。借助FreeSWITCH,我們希望為相關(guān)行業(yè)帶來(lái)更加出色的多媒體傳輸服務(wù),實(shí)現(xiàn)通聯(lián)世界平等溝通的美好愿景。
【免責(zé)聲明】本文僅代表作者本人觀點(diǎn),與CTI論壇無(wú)關(guān)。CTI論壇對(duì)文中陳述、觀點(diǎn)判斷保持中立,不對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請(qǐng)讀者僅作參考,并請(qǐng)自行承擔(dān)全部責(zé)任。

評(píng)論排行

專(zhuān)題

CTI論壇會(huì)員企業(yè)

孟州市| 马关县| 西安市| 微山县| 中阳县| 佛教| 呈贡县| 德令哈市| 泽库县| 砀山县| 灵山县| 孟村| 东海县| 弥勒县| 平乡县| 宁蒗| 金塔县| 阜平县| 利川市| 莱芜市| 成安县| 陆丰市| 府谷县| 恩平市| 奎屯市| 手游| 黄梅县| 九龙县| 延津县| 贺州市| 京山县| 陇川县| 上杭县| 昭平县| 望江县| 于都县| 嫩江县| 南靖县| 高邮市| 呼和浩特市| 松原市|