關(guān)于VoIP音視頻開(kāi)發(fā)<一>

一提到VoIP有人就想到了網(wǎng)絡(luò)電話鼻听,是沒(méi)錯(cuò)编检,但網(wǎng)絡(luò)電話只是VoIP應(yīng)用的一種渡贾,也是最初設(shè)計(jì)VoIP的目的◎茸ィ現(xiàn)在運(yùn)營(yíng)商針對(duì)3G/4G提出的VoLTE其實(shí)跟VoIP有很大聯(lián)系庆尘,VoIP顧名思義基于IP網(wǎng)絡(luò)的語(yǔ)音,這個(gè)網(wǎng)絡(luò)包括寬帶光纖巷送、局域網(wǎng)驶忌、廣域網(wǎng)、移動(dòng)網(wǎng)絡(luò)等笑跛,適應(yīng)性很強(qiáng)付魔,而VoLTE其實(shí)就是基于LTE移動(dòng)網(wǎng)絡(luò)的語(yǔ)音。眾所周知3G/4G網(wǎng)絡(luò)本身只承載流量數(shù)據(jù)的飞蹂,以至于不支持VoLTE的手機(jī)通話時(shí)必須回落到GSM(2G)網(wǎng)絡(luò)上几苍,可以說(shuō)VoLTE也是基于VoIP開(kāi)發(fā)的移動(dòng)語(yǔ)音技術(shù)。

這篇文章從答應(yīng)到寫(xiě)開(kāi)始寫(xiě)整整拖了大半年陈哑, 我不得不承認(rèn)我很懶妻坝,忙起來(lái)也確實(shí)不喜歡寫(xiě)東西。在通信和多媒體方面工作了幾年惊窖,也開(kāi)發(fā)了一些亂七八糟的玩意兒惠勒,包括網(wǎng)絡(luò)電話、SDK爬坑。所以這次就主要聊一下基于SIP協(xié)議的VoIP網(wǎng)絡(luò)應(yīng)用纠屋。


什么是VoIP?

VoIP(Voice over Internet Protocol)簡(jiǎn)而言之就是將模擬信號(hào)數(shù)字化盾计,以數(shù)據(jù)封包(Data Packet)的形式在IP網(wǎng)絡(luò)(IP Network)上做實(shí)時(shí)傳遞售担。VoIP最大的優(yōu)勢(shì)是能廣泛地采用Internet和全球IP互連的環(huán)境,提供比傳統(tǒng)業(yè)務(wù)更多署辉、更好的服務(wù)族铆。

VoIP可以在IP網(wǎng)絡(luò)上便宜的傳送語(yǔ)音、傳真哭尝、視頻哥攘、和數(shù)據(jù)等業(yè)務(wù),如虛擬電話材鹦、虛擬語(yǔ)音/傳真郵箱逝淹、查號(hào)業(yè)務(wù)、Internet呼叫中心桶唐、Internet呼叫管理栅葡、電話視頻會(huì)議、傳真存儲(chǔ)轉(zhuǎn)發(fā)和各種信息的存儲(chǔ)轉(zhuǎn)發(fā)等尤泽。

VoIP基本原理

VoIP是一種以IP電話為主欣簇,并推出相應(yīng)的增值業(yè)務(wù)的技術(shù)规脸。
是通過(guò)語(yǔ)音的壓縮算法對(duì)語(yǔ)音數(shù)據(jù)編碼進(jìn)行壓縮處理,然后把這些語(yǔ)音數(shù)據(jù)按 TCP/IP 標(biāo)準(zhǔn)進(jìn)行打包熊咽,經(jīng)過(guò)IP網(wǎng)絡(luò)把數(shù)據(jù)包送至接收地莫鸭,再把這些語(yǔ)音數(shù)據(jù)包串起來(lái),經(jīng)過(guò)解壓處理后横殴,恢復(fù)成原來(lái)的語(yǔ)音信號(hào)被因,從而達(dá)到由互聯(lián)網(wǎng)傳送語(yǔ)音的目的。IP 電話的核心與關(guān)鍵設(shè)備是 IP 網(wǎng)關(guān)滥玷,它把各地區(qū)電話區(qū)號(hào)映射為相應(yīng)的地區(qū)網(wǎng)關(guān) IP 地址氏身。

VoIP主要的三種應(yīng)用形式:
  • 網(wǎng)絡(luò)電話:完全基于Internet傳輸實(shí)現(xiàn)的語(yǔ)音通話方式,包括是PC和PC之間惑畴、PC與手機(jī)APP蛋欣、手機(jī)APP之間進(jìn)行通話。比如QQ音頻如贷、WhatsApp陷虎、微信電話等;
  • 與公眾電話網(wǎng)互聯(lián)的IP電話:通過(guò)寬帶或?qū)S玫腎P網(wǎng)絡(luò)杠袱,實(shí)現(xiàn)語(yǔ)音傳輸尚猿。終端可以是PC或者專(zhuān)用的IP話機(jī)。當(dāng)VoIP網(wǎng)絡(luò)語(yǔ)音系統(tǒng)接入PSTN電路交換網(wǎng)絡(luò)楣富,也就是說(shuō)可以透?jìng)鞯狡胀℅SM電話了凿掂,實(shí)現(xiàn)落地,直接從因特網(wǎng)VoIP連通到SIM電話纹蝴,現(xiàn)在很多網(wǎng)絡(luò)電話都可以透?jìng)髀涞刈1热鏢kype、UUtone塘安、Viber糠涛、有信等;
  • 傳統(tǒng)電信運(yùn)營(yíng)商的VoIP業(yè)務(wù):通過(guò)電信運(yùn)營(yíng)商的PLMN移動(dòng)網(wǎng)絡(luò)傳輸語(yǔ)音兼犯。提供的業(yè)務(wù)仍然是傳統(tǒng)的電話業(yè)務(wù)忍捡,使用傳統(tǒng)的話機(jī)終端。通過(guò)使用IP電話卡切黔,或者在撥打的電話號(hào)碼之前加上IP撥號(hào)前綴砸脊,這就使用了電信運(yùn)營(yíng)商提供的VoIP業(yè)務(wù)。如中國(guó)移動(dòng)曾經(jīng)的Jego绕娘、現(xiàn)在的VoLTE 等脓规。
常用的VoIP協(xié)議(Control Protocol)如H.323、SIP险领、MEGACO和MGCP侨舆。
  • H.323是一種ITU-T標(biāo)準(zhǔn),最初用于局域網(wǎng)(LAN)上的多媒體會(huì)議绢陌,后來(lái)擴(kuò)展至覆蓋VoIP挨下。該標(biāo)準(zhǔn)既包括了點(diǎn)對(duì)點(diǎn)通信也包括了多點(diǎn)會(huì)議。
  • 會(huì)話發(fā)起協(xié)議(SIP)是建立VoIP連接的IETF標(biāo)準(zhǔn)脐湾。SIP是一種應(yīng)用層控制協(xié)議臭笆,用于和一個(gè)或多個(gè)參與者創(chuàng)建、修改和終止會(huì)話秤掌。
  • 媒體網(wǎng)關(guān)控制協(xié)議(MGCP)定義了呼叫控制單元(呼叫代理或媒體網(wǎng)關(guān))與電話網(wǎng)關(guān)之間的通信服務(wù)愁铺。
  • 媒體網(wǎng)關(guān)控制協(xié)議(MEGACO)是IETF和ITU-T(ITU-TH.248建議)共同努力的結(jié)果。
H.323建議中定義了四個(gè)主要的組件:即
  • 終端:(Terminal)--須支持語(yǔ)音通信闻鉴,視頻和數(shù)據(jù)通信能力是可選的茵乱。
  • 網(wǎng)關(guān):(Gateway)能把不同系統(tǒng)所用的協(xié)議、音頻孟岛、視頻編碼算法以及控制信號(hào)進(jìn)行變換以適應(yīng)系統(tǒng)終端互通瓶竭。
  • 關(guān)守:(Gatekeeper)網(wǎng)關(guān)管理軟件(也叫網(wǎng)閘)
  • 多點(diǎn)控制單元(Multipoint Control Unit)--MCU實(shí)現(xiàn)了在IP網(wǎng)絡(luò)上進(jìn)行多點(diǎn)通信,點(diǎn)到點(diǎn)的通信并不需要渠羞。

網(wǎng)絡(luò)電話的工作原理

和GSM語(yǔ)音網(wǎng)絡(luò)類(lèi)似斤贰,網(wǎng)絡(luò)電話也是有自己的語(yǔ)音編碼(關(guān)乎音頻質(zhì)量和帶寬占用)和信令控制(音頻狀態(tài)捕捉和操作命令)。

常見(jiàn)VoIP音頻編碼有silk次询、ilbc荧恍、G7.29、G7.22屯吊、AAC送巡、PCMU以及大眾熟知的GSM等,而與我們常說(shuō)的音頻文件編碼格式MP3、APE雌芽、OGG授艰、WMA等文件格式是有區(qū)別的.

在網(wǎng)絡(luò)中傳輸著各種信號(hào),其中一部分是我們需要的(例如打電話的語(yǔ)音世落,上網(wǎng)的數(shù)據(jù)包等等)淮腾,而另外一部分是我們不需要的(只能說(shuō)不是直接需要)它用來(lái)專(zhuān)門(mén)控制電路的,這一類(lèi)型的信號(hào)我們就稱(chēng)之為信令屉佳,信令的傳輸需要一個(gè)信令網(wǎng)谷朝。信令控制無(wú)論是在VoIP還是傳統(tǒng)GSM電話上都有著重要的作用(控制系統(tǒng)在哪都很重要),比如電話連通狀態(tài)武花、DTMF等圆凰。


關(guān)于SIP協(xié)議

SIP(Session Initiation Protocol,會(huì)話初始協(xié)議)是由IETF(Internet Engineering Task Force体箕,因特網(wǎng)工程任務(wù)組)制定的多媒體通信協(xié)議专钉。它是一個(gè)基于文本的應(yīng)用層控制協(xié)議挑童,用于創(chuàng)建、修改和釋放一個(gè)或多個(gè)參與者的會(huì)話跃须。廣泛應(yīng)用于CS(Circuit Switched站叼,電路交換)、NGN(Next Generation Network菇民,下一代網(wǎng)絡(luò))以及IMS(IP Multimedia Subsystem尽楔,IP多媒體子系統(tǒng))的網(wǎng)絡(luò)中,可以支持并應(yīng)用于語(yǔ)音第练、視頻阔馋、數(shù)據(jù)等多媒體業(yè)務(wù)娇掏,同時(shí)也可以應(yīng)用于Presence(呈現(xiàn))呕寝、Instant Message(即時(shí)消息)等特色業(yè)務(wù)【园可以說(shuō)志秃,有IP網(wǎng)絡(luò)的地方就有SIP協(xié)議的存在竟坛。 SIP是類(lèi)似于HTTP担汤。由于基于IP協(xié)議的SIP利用了IP網(wǎng)絡(luò)崭歧,固定網(wǎng)運(yùn)營(yíng)商也會(huì)逐漸認(rèn)識(shí)到SIP技術(shù)對(duì)于他們的遠(yuǎn)意義率碾。

本次我也主要說(shuō)一下給予sip協(xié)議的VoIP開(kāi)發(fā),畢竟目前基于sip協(xié)議的VoIP是應(yīng)用最廣泛的。SIP 會(huì)話使用多達(dá)四個(gè)主要組件:SIP 用戶代理、SIP 注冊(cè)服務(wù)器、SIP 代理服務(wù)器和 SIP 重定向服務(wù)器。

SIP通過(guò)以下邏輯功能來(lái)完成通信:

  • 用戶定位功能:確定參與通信的終端用戶位置谭羔。
  • 用戶通信能力協(xié)商功能:確定參與通信的媒體終端類(lèi)型和具體參數(shù)磕蛇。
  • 用戶是否參與交互功能:確定某個(gè)終端是否加入某個(gè)特定會(huì)話中。
  • 建立呼叫和控制呼叫功能:包括向被叫“振鈴”秀撇、確定主叫和被叫的呼叫參數(shù)呵燕、呼叫重定向再扭、呼叫轉(zhuǎn)移泛范、終止呼叫等罢荡。

關(guān)于在iOS上開(kāi)發(fā)和適配VoIP應(yīng)用及注意事項(xiàng)

近觀這幾年互聯(lián)網(wǎng)高速發(fā)展区赵,很多之前很獨(dú)特的功能都已經(jīng)被迅速囫圇吞棗的普及了,比如在線音頻、視頻、直播到千、短視頻...... 馬上VR憔四、AR又要普及了甸赃。工作了幾年埠对,原本以為可以安安靜靜慢慢研究一個(gè)東西襟沮,可是越來(lái)越感覺(jué)沒(méi)時(shí)間去跟上潮流節(jié)奏。一個(gè)不得不承認(rèn)的事實(shí)是遭商,精力有限的個(gè)體很難在技術(shù)深度和廣度上達(dá)成理想的平衡固灵,所以我越來(lái)越懶,懶得花時(shí)間去寫(xiě)網(wǎng)文株婴。每天看到很多人整天在網(wǎng)上轉(zhuǎn)發(fā)各種技術(shù)小貼怎虫,不亦樂(lè)乎,我真的不感興趣困介。這篇文章拖了大半年了大审,目測(cè)得慢慢更新完善。

現(xiàn)在你想開(kāi)發(fā)和集成VoIP功能座哩,無(wú)非有兩種:使用成熟的第三方庫(kù)徒扶,或者有精力去自己找資料從基礎(chǔ)研究。成熟的第三方庫(kù)其實(shí)很多根穷,除了開(kāi)源姜骡、開(kāi)放的比如PJsip、linphone等屿良,國(guó)內(nèi)也有很多IM-VoIP廠商再封包定制的圈澈。當(dāng)然我自己也曾基于以上開(kāi)源項(xiàng)目制作過(guò)VoIP的SDK:XWVoIPKit,已經(jīng)有幾家公司在產(chǎn)品中正在使用尘惧,想要了解試用或者的可以聯(lián)系我康栈。無(wú)論怎樣先粗略說(shuō)一下VoIP最基本的要素,最好自己了解RTP。

  • 數(shù)據(jù)打包:打包周期啥么、包大小登舞、數(shù)據(jù)傳輸;
=包長(zhǎng)度×(1/打包周期)
=(Ethernet頭+IP頭+UDP頭+RTP頭+有效載荷)×(1/打包周期)
=(208bit +160bit+64bit+96bit +有效載荷)×(1/打包周期)
=(528bit+(打包周期(秒)×每秒的比特?cái)?shù)))×(1/打包周期)
=( 528 / 打包周期 ) + 每秒比特?cái)?shù)```

* 音頻編解碼:上面說(shuō)了編碼方式很多悬荣,不同的編碼格式?jīng)Q定了數(shù)據(jù)包的不同菠秒。
根據(jù)各種編碼方式,得出:

`G711:20ms打包氯迂,帶寬為 ( 528/20 + 64) Kbit/s=90.4 Kbit/s
 G729:20ms打包践叠,帶寬為 ( 528/20 + 8 ) Kbit/s= 34.4 Kbit/s
 G723:5.3k,30ms打包囚戚,帶寬為 ( 528/30 + 5.3 ) Kbit/s=22.9 Kbit/s`
 根據(jù)實(shí)際使用silk酵熙、ilbc和G729在音質(zhì)、帶寬驰坊、丟包率和運(yùn)算量上的綜合效果比較好,前兩者還是免費(fèi)的哮独,尤其是窄帶ilbc的丟包補(bǔ)償效果在低帶寬網(wǎng)絡(luò)下音質(zhì)效果相當(dāng)不錯(cuò)拳芙。而silk的綜合體驗(yàn)比較出色,據(jù)我所知QQ音頻使用的也是Skype的silk編碼皮璧,只不過(guò)QQ做了一些處理舟扎。

![IMG_3921.PNG](http://upload-images.jianshu.io/upload_images/580038-7db471ccabb4159c.PNG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

我知道有人嘗試在局域網(wǎng)內(nèi)做點(diǎn)對(duì)點(diǎn)的IP語(yǔ)音,使用tcp socket直接連接對(duì)方IP悴务,再用udp直接發(fā)送錄制的音頻數(shù)據(jù)包睹限,勉強(qiáng)可以播放,很明顯雜音和丟包嚴(yán)重讯檐。我自己曾經(jīng)也嘗試過(guò)羡疗,因?yàn)榘l(fā)包周期不穩(wěn)定,音頻數(shù)據(jù)也沒(méi)有經(jīng)過(guò)壓縮帶寬負(fù)載大别洪,不可避免地?cái)?shù)據(jù)丟包叨恨、延遲。所以真正做應(yīng)用的時(shí)候還是使用專(zhuān)門(mén)的編解碼方式比較好挖垛。其次痒钝,這種點(diǎn)對(duì)點(diǎn)語(yǔ)音只能用于原理測(cè)試,沒(méi)有服務(wù)器網(wǎng)關(guān)和電路交換痢毒,無(wú)法服務(wù)多方用戶送矩。

還有信令控制的協(xié)議設(shè)計(jì),這個(gè)也很重要哪替,據(jù)我所知linphone的VoIP最大的缺陷在于未接通電話前的信令控制不準(zhǔn)確栋荸,具體表現(xiàn)在拒接來(lái)電操作經(jīng)常無(wú)反應(yīng)。還有就是DTMF(dual-tone multifrequency)功能和控制。

* 關(guān)于純VoIP通信的東西也沒(méi)法在這里深入蒸其。還是說(shuō)一下做sip-VoIP移動(dòng)端開(kāi)發(fā)的事兒敏释。

###### 1. 即時(shí)性保證。
**做通信我們知道保證實(shí)時(shí)性很重要摸袁,時(shí)效不能保障钥顽,基本體驗(yàn)就好不了。我們知道iOS8之前的VoIP推送基本靠APNS通知靠汁,可以嘗試強(qiáng)行申請(qǐng)后臺(tái)蜂大。iOS8~iOS10,蘋(píng)果專(zhuān)門(mén)針對(duì)VoIP搞了個(gè)VoIP證書(shū)蝶怔,對(duì)應(yīng)的有了VoIP推送(pushKit)奶浦,還可以申明VoIP長(zhǎng)連接線程避免被后臺(tái)殺掉。而iOS10起踢星,蘋(píng)果優(yōu)化pushkit澳叉、認(rèn)為VoIP更加可靠和為了省電,不再讓VoIP保存長(zhǎng)連接沐悦,直接使用VoIP推送基本也可以及時(shí)喚醒應(yīng)用了成洗,反正還可以配合apns消息提醒用戶。**

![屏幕快照 2017-06-26 下午3.05.40.png](http://upload-images.jianshu.io/upload_images/580038-2a15b7f78d3f6019.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

###### 2. 適配CallKit藏否,這個(gè)可選瓶殃。

**iOS10同時(shí)還帶來(lái)了[CallKit](https://github.com/viviwu/XWCallKitDemo),主要有兩個(gè)功能:提升VoIP音頻系統(tǒng)級(jí)別副签,統(tǒng)一普通SIM卡GSM電話和VoIP電話的鎖屏接聽(tīng)體驗(yàn)遥椿;號(hào)碼攔截、識(shí)別(實(shí)現(xiàn)安卓上的黑名單和來(lái)電秀功能淆储,如企鵝冠场、xxx手機(jī)管家)。**

遏考。慈鸠。。灌具。

##### 3.具體的青团,新手可以參考linphone、PJsip等知名的開(kāi)源項(xiàng)目咖楣。后一篇我們聊聊SIP服務(wù)器端督笆。
-------
      歡迎交流。由于工作的原因诱贿,我可能不定期修改更新娃肿。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末咕缎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子料扰,更是在濱河造成了極大的恐慌凭豪,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晒杈,死亡現(xiàn)場(chǎng)離奇詭異嫂伞,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)拯钻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)帖努,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人粪般,你說(shuō)我怎么就攤上這事拼余。” “怎么了亩歹?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵匙监,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我捆憎,道長(zhǎng)舅柜,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任躲惰,我火速辦了婚禮,結(jié)果婚禮上变抽,老公的妹妹穿的比我還像新娘础拨。我一直安慰自己,他們只是感情好绍载,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布诡宗。 她就那樣靜靜地躺著,像睡著了一般击儡。 火紅的嫁衣襯著肌膚如雪塔沃。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,046評(píng)論 1 285
  • 那天阳谍,我揣著相機(jī)與錄音蛀柴,去河邊找鬼。 笑死矫夯,一個(gè)胖子當(dāng)著我的面吹牛鸽疾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播训貌,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼制肮,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼冒窍!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起豺鼻,我...
    開(kāi)封第一講書(shū)人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤综液,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后儒飒,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體谬莹,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年约素,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了届良。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡圣猎,死狀恐怖士葫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情送悔,我是刑警寧澤芥备,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站殴蹄,受9級(jí)特大地震影響咽扇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜洁段,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一应狱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧祠丝,春花似錦疾呻、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至叠蝇,卻和暖如春璃岳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背悔捶。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工铃慷, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人炎功。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓枚冗,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蛇损。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赁温,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容