kurento json invoke API

kurento V6.10.0
繼承關系
WebRtcEndpoint→BaseRtpEndpoint→SdpEndpoint→SessionEndpoint→Endpoint→MediaElement→MediaObject
MediaPipeline→MediaObject

WebRtcEndpoint

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "gatherCandidates",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 16
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getStunServerAddress",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 26
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getStunServerPort",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 27
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getTurnUrl",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 28
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getICECandidatePairs",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 23
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getIceConnectionState",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 24
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "addIceCandidate",
        "operationParams": {
            "candidate": {
                "candidate": "candidate:3575467457 1 udp 2122260223 10.15.83.23 54406 typ host generation 0 ufrag Alha network-id 1",
                "sdpMid": "0",
                "sdpMLineIndex": 0,
                "__module__": "kurento",
                "__type__": "IceCandidate"
            }
        },
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 6
}

createDataChannel(label, ordered, maxPacketLifeTime, maxRetransmits, protocol);
closeDataChannel(channelId);
setStunServerAddress(stunServerAddress);
setStunServerPort(stunServerPort);
setTurnUrl(turnUrl);

BaseRtpEndpoint

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getMinVideoRecvBandwidth",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 32
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getMinVideoSendBandwidth",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 33
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getMaxVideoSendBandwidth",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 30
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getMediaState",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 31
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getConnectionState",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 29
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getRembParams",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 35
}

setMinVideoRecvBandwidth(minVideoRecvBandwidth);
setMinVideoSendBandwidth(minVideoSendBandwidth);
setMaxVideoSendBandwidth(maxVideoSendBandwidth);
setRembParams(rembParams);

SdpEndpoint

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "generateOffer",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 36
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getLocalSessionDescriptor",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 37
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getRemoteSessionDescriptor",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 40
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getMaxVideoRecvBandwidth",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 39
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getMaxAudioRecvBandwidth",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 38
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "8067b108-c036-4cdf-82dd-1714fb946712_kurento.MediaPipeline/f5934450-d064-4e17-90fb-611bfa1de7fa_kurento.WebRtcEndpoint",
        "operation": "processOffer",
        "operationParams": {
            "offer": "v=0\r\no=- 3795908939 3795908939 IN IP4 192.168.74.80\r\ns=Kurento Media Server\r\nc=IN IP4 192.168.74.80\r\nt=0 0\r\nm=audio 11596 RTP\/AVPF 96 0 97\r\na=setup:actpass\r\na=extmap:3 http:\/\/www.webrtc.org\/experiments\/rtp-hdrext\/abs-send-time\r\na=rtpmap:96 opus\/48000\/2\r\na=rtpmap:97 AMR\/8000\r\na=sendrecv\r\na=mid:audio0\r\na=ssrc:3532662463 cname:user2731653506@host-400c3260\r\nm=video 59874 RTP\/AVPF 102 103\r\na=setup:actpass\r\na=extmap:3 http:\/\/www.webrtc.org\/experiments\/rtp-hdrext\/abs-send-time\r\na=rtpmap:102 VP8\/90000\r\na=rtpmap:103 H264\/90000\r\na=sendrecv\r\na=mid:video0\r\na=rtcp-fb:102 nack\r\na=rtcp-fb:102 nack pli\r\na=rtcp-fb:102 goog-remb\r\na=rtcp-fb:102 ccm fir\r\na=rtcp-fb:103 nack\r\na=rtcp-fb:103 nack pli\r\na=rtcp-fb:103 ccm fir\r\na=ssrc:1784530171 cname:user2731653506@host-400c3260\r\n"
        },
        "sessionId": "c5ac767a-65ad-41d7-ae6b-c886603fe376"
    },
    "id": 15
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "4c8579c9-5790-4d2a-b8f7-413cf9a3d4da_kurento.MediaPipeline\/c596037a-7c2b-4641-b0a8-78f50ebd17cb_kurento.RtpEndpoint",
        "operation": "processAnswer",
        "operationParams": {
            "answer": "v=0\r\no=- 3795908966 3795908966 IN IP4 192.168.74.80\r\ns=Kurento Media Server\r\nc=IN IP4 192.168.74.80\r\nt=0 0\r\nm=audio 38680 RTP\/AVPF 96 0 97\r\na=extmap:3 http:\/\/www.webrtc.org\/experiments\/rtp-hdrext\/abs-send-time\r\na=sendrecv\r\na=mid:audio0\r\na=rtpmap:96 opus\/48000\/2\r\na=rtpmap:97 AMR\/8000\r\na=setup:active\r\na=ssrc:1489651569 cname:user1709681950@host-dacdb32f\r\nm=video 23472 RTP\/AVPF 102 103\r\na=extmap:3 http:\/\/www.webrtc.org\/experiments\/rtp-hdrext\/abs-send-time\r\na=sendrecv\r\na=mid:video0\r\na=rtpmap:102 VP8\/90000\r\na=rtpmap:103 H264\/90000\r\na=rtcp-fb:102 nack\r\na=rtcp-fb:102 nack pli\r\na=rtcp-fb:102 goog-remb\r\na=rtcp-fb:102 ccm fir\r\na=rtcp-fb:103 nack\r\na=rtcp-fb:103 nack pli\r\na=rtcp-fb:103 ccm fir\r\na=setup:active\r\na=ssrc:306740185 cname:user1709681950@host-dacdb32f\r\n"
        },
        "sessionId": "c69b93ee-2cd6-499f-a76d-73b0b974713a"
    },
    "id": 15
}

setMaxVideoRecvBandwidth(maxVideoRecvBandwidth);
setMaxAudioRecvBandwidth(maxAudioRecvBandwidth);

SessionEndpoint

Endpoint

MediaElement

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getSourceConnections",
        "operationParams": {},
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 45
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getStats",
        "operationParams": {
            "mediaType": "VIDEO"
        },
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 46
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getMinOuputBitrate",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 43
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getMinOutputBitrate",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 44
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getMaxOuputBitrate",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 41
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getMaxOutputBitrate",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 42
}

getSinkConnections(mediaType, description);
connect(sink, mediaType, sourceMediaDescription, sinkMediaDescription);
disconnect(sink, mediaType, sourceMediaDescription, sinkMediaDescription);
setAudioFormat(caps);
setVideoFormat(caps);
getGstreamerDot(details);
setOutputBitrate(bitrate);
isMediaFlowingIn(mediaType, sinkMediaDescription);
isMediaFlowingOut(mediaType, sourceMediaDescription);
isMediaTranscoding(mediaType, binName);
setMinOuputBitrate(minOuputBitrate);
setMinOutputBitrate(minOutputBitrate);
setMaxOuputBitrate(maxOuputBitrate);
setMaxOutputBitrate(maxOutputBitrate);

MediaPipeline

getGstreamerDot(details);
getLatencyStats();
setLatencyStats(latencyStats);

MediaObject

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getTags",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 54
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getMediaPipeline",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 50
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getParent",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 52
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getChilds",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 48
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getChildren",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 47
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getName",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 51
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getSendTagsInEvents",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 53
}

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "object": "d244bd28-0a75-465b-8dd8-0c72cae54336_kurento.MediaPipeline/f0f45c66-1ad5-4546-acfe-fae08794d224_kurento.WebRtcEndpoint",
        "operation": "getCreationTime",
        "sessionId": "03d76c86-f6ad-43de-93bb-e9073bcbe7e3"
    },
    "id": 49
}

addTag(key, value);
removeTag(key);
getTag(key);
setName(name);
setSendTagsInEvents(sendTagsInEvents);
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市惋增,隨后出現的幾起案子韧涨,更是在濱河造成了極大的恐慌骇窍,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渐扮,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機涨岁,發(fā)現死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吉嚣,“玉大人梢薪,你說我怎么就攤上這事〕⒍撸” “怎么了秉撇?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長秋泄。 經常有香客問我琐馆,道長,這世上最難降的妖魔是什么恒序? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任瘦麸,我火速辦了婚禮,結果婚禮上歧胁,老公的妹妹穿的比我還像新娘滋饲。我一直安慰自己厉碟,他們只是感情好,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布屠缭。 她就那樣靜靜地躺著箍鼓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪呵曹。 梳的紋絲不亂的頭發(fā)上款咖,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音奄喂,去河邊找鬼铐殃。 笑死,一個胖子當著我的面吹牛砍聊,可吹牛的內容都是我干的背稼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼玻蝌,長吁一口氣:“原來是場噩夢啊……” “哼蟹肘!你這毒婦竟也來了?” 一聲冷哼從身側響起俯树,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤帘腹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后许饿,有當地人在樹林里發(fā)現了一具尸體阳欲,經...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年陋率,在試婚紗的時候發(fā)現自己被綠了球化。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡瓦糟,死狀恐怖筒愚,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情菩浙,我是刑警寧澤巢掺,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站劲蜻,受9級特大地震影響陆淀,放射性物質發(fā)生泄漏。R本人自食惡果不足惜先嬉,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一轧苫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧疫蔓,春花似錦浸剩、人聲如沸钾军。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拗小,卻和暖如春重罪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背哀九。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工剿配, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人阅束。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓呼胚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親息裸。 傳聞我的和親對象是個殘疾皇子蝇更,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354