日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Janus流媒体服务器信令分析

發(fā)布時間:2024/4/11 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Janus流媒体服务器信令分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Janus流媒體服務(wù)器信令分析


目錄

  • 房間配置文件
  • API分類
  • Video Room房間管理
  • VideoRoom Publishers
  • VideoRoom Subscribers
  • video room文檔:https://janus.conf.meetecho.com/docs/videoroom.html


    1. 房間配置文件

    room-<unique room ID>: {# 房間描述description = This is my awesome room# 是否是私有房間,當(dāng)提出“l(fā)ist”請求時,私人房間不會出現(xiàn)is_private = true|false (private rooms don't appear when you do a 'list' request, default=false)# 密碼,操作房間時需要攜帶secret = <optional password needed for manipulating (e.g. destroying) the room># 密碼,加?房間時使?pin = <optional password needed for joining the room># 訂閱者是否需要提供?個有效的與發(fā)布者關(guān)聯(lián)的有效private_idrequire_pvtid = true|false (whether subscriptions are required to provide a valid private_idto associate with a publisher, default=false)# 房間內(nèi)最?的發(fā)布者數(shù)量publishers = <max number of concurrent senders> (e.g., 6 for a videoconference or 1 for a webinar, default=3)# 發(fā)送者最?的視頻?特率bitrate = <max video bitrate for senders> (e.g., 128000)bitrate_cap = <true|false, whether the above cap should act as a limit to dynamic bitrate changes by publishers, default=false>,# FIR指令fir_freq = <send a FIR to publishers every fir_freq seconds> (0=disable)# ?頻編碼器,從左到右的優(yōu)先級audiocodec = opus|g722|pcmu|pcma|isac32|isac16 (audio codec to force on publishers, default=opuscan be a comma separated list in order of preference, e.g., opus,pcmu)# 視頻編碼器,從左到右的優(yōu)先級videocodec = vp8|vp9|h264|av1|h265 (video codec to force on publishers, default=vp8can be a comma separated list in order of preference, e.g., vp9,vp8,h264)vp9_profile = VP9-specific profile to prefer (e.g., "2" for "profile-id=2")h264_profile = H.264-specific profile to prefer (e.g., "42e01f" for "profile-level-id=42e01f")# 是否使?內(nèi)置FECopus_fec = true|false (whether inband FEC must be negotiated; only works for Opus, default=false)# 是否?持編碼SVC模式,?前只?持VP9video_svc = true|false (whether SVC support must be enabled; only works for VP9, default=false)audiolevel_ext = true|false (whether the ssrc-audio-level RTP extension must benegotiated/used or not for new publishers, default=true)audiolevel_event = true|false (whether to emit event to other users or not, default=false)# 音頻級別的包數(shù)audio_active_packets = 100 (number of packets with audio level, default=100, 2 seconds)# ?頻?量基本平均值audio_level_average = 25 (average value of audio level, 127=muted, 0='too loud', default=25)videoorient_ext = true|false (whether the video-orientation RTP extension must benegotiated/used or not for new publishers, default=true)playoutdelay_ext = true|false (whether the playout-delay RTP extension must benegotiated/used or not for new publishers, default=true)transport_wide_cc_ext = true|false (whether the transport wide CC RTP extension must benegotiated/used or not for new publishers, default=true)# 是否錄制record = true|false (whether this room should be recorded, default=false)# 錄制?錄rec_dir = <folder where recordings should be stored, when enabled>lock_record = true|false (whether recording can only be started/stopped if the secretis provided, or using the global enable_recording request, default=false)# 當(dāng)新?加?時是否通知所有的參會者notify_joining = true|false (optional, whether to notify all participants when a newparticipant joins the room. The Videoroom plugin by design only notifiesnew feeds (publishers), and enabling this may result extra notificationtraffic. This flag is particularly useful when enabled with require_pvtidfor admin to manage listening only participants. default=false)# 是否使?端對端加密require_e2ee = true|false (whether all participants are required to publish and subscribeusing end-to-end media encryption, e.g., via Insertable Streams; default=false) }

    2. API分類

  • Video Room ?持不同的請求,?部分是同步請求,?部分是異步請求。
  • 1. 同步請求

  • 同步請求:直接在事務(wù)( transacation )的上下??獲取響應(yīng),即直接響應(yīng)( transaction 綁定即可)
  • create:動態(tài)創(chuàng)建?個新的房間,作為使?配置?件的替代?法
  • destroy:移除并銷毀房間,同時剔除房間?的所有?戶
  • edit:動態(tài)修改?些房間屬性
  • exists:查詢是否存在指定的房間
  • list:列出所有可?的房間
  • allowed:配置觀眾進(jìn)?房間權(quán)限
  • kick:管理員踢除?戶操作
  • listparticipants:列出所有指定房間中活躍(?如當(dāng)前正在發(fā)布)的參與者和他們的詳細(xì)信息
  • 2. 異步請求

  • 異步請求:在事件( event )通知中獲取成功( success )與失敗( failure )事件,先發(fā)?個ask后再發(fā)?個 event 進(jìn)?響應(yīng)(必須使? handle_id 綁定)
  • join:加?指定的房間,并指定連接?于發(fā)布或觀看?視頻
  • configure:修改?些參與者的設(shè)置,例如 bitrate cap
  • joinandconfigure:對于發(fā)布者,將前兩個請求合成?個
  • publish:開始發(fā)送媒體并?播給其他參與者
  • unpublish:停?發(fā)送媒體并?播給其他參與者
  • start:開始接收來?發(fā)布者的媒體數(shù)據(jù)
  • pause:停?傳遞媒體數(shù)據(jù)
  • switch:修改媒體連接的來源
  • leave:離開房間
  • 3. Video Room房間管理

    1. create-創(chuàng)建房間

    1. 請求body

    {"request" : "create","room" : <unique numeric ID, optional, chosen by plugin if missing>,"permanent" : <true|false, whether the room should be saved in the config file, default=false>,"description" : "<pretty name of the room, optional>","secret" : "<password required to edit/destroy the room, optional>","pin" : "<password required to join the room, optional>","is_private" : <true|false, whether the room should appear in a list request>,"allowed" : [ array of string tokens users can use to join this room, optional],... }
  • 更多房間創(chuàng)建參數(shù)可參考房間配置?件—— conf/janus.plugin.videoroom.jcfg
  • 請求都是以"request"為key,接著是命令,?如這?的"create"。
  • room:可選,唯?的房間ID,不提供時由video room插件?動?成;
  • permanent:可選,是否永久保存該房間;
  • secret: 可選,編輯/銷毀房間時?的密碼;
  • pin:可選,加?房間的密碼;
  • is_private:可選,是否是私有房間?如果是私有房間則不會出現(xiàn)在房間列表中;
  • allowed:可選,?戶加?房間的token數(shù)組;
  • 2. 成功響應(yīng)-created

    {"videoroom" : "created","room" : <unique numeric ID>,"permanent" : <true if saved to config file, false if not> }
  • 創(chuàng)建成功后返回房間ID
  • 如果你請求了?個永久房間但返回的是false,則很有可能是權(quán)限的問題。
  • 3. 失敗回調(diào) event

    {"videoroom" : "event","error_code" : <numeric ID, check Macros below>,"error" : "<error description as a string>" }
  • 默認(rèn)情況下,Janus 中所有?戶都可以創(chuàng)建房間,但我們可以在插件中配置 admin_key 來限制此功能,只有在 create 攜帶了正確的 admin_key 才可以創(chuàng)建成功。
  • 也可以選擇將此功能擴(kuò)展到RTP轉(zhuǎn)發(fā),以便只允許受信任的客戶端使?此功能。
  • 2. edit-編輯房間

  • 在房間被創(chuàng)建后,我們可以使? edit 編輯房間的屬性(例如 room description 、 secret 、 pin 、private or not ),但不能修改?些靜態(tài)的屬性(例如 room ID 、 sampling rate )。
  • 1. 請求body

    {"request" : "edit","room" : <unique numeric ID of the room to edit>,"secret" : "<room secret, mandatory if configured>","new_description" : "<new pretty name of the room, optional>","new_secret" : "<new password required to edit/destroy the room, optional>","new_pin" : "<new password required to join the room, optional>","new_is_private" : <true|false, whether the room should appear in a list request>,"new_require_pvtid" : <true|false, whether the room should require private_id from subscribers>,"new_bitrate" : <new bitrate cap to force on all publishers (except those with custom overrides)>,"new_fir_freq" : <new period for regular PLI keyframe requests to publishers>,"new_publishers" : <new cap on the number of concurrent active WebRTC publishers>,"new_lock_record" : <true|false, whether recording state can only be changed when providing the room secret>,"permanent" : <true|false, whether the room should be also removed from the config file, default=false> }
  • 創(chuàng)建房間完成后,ID是不可以修改的。
  • 2. 成功響應(yīng)-edited

    {"videoroom" : "edited","room" : <unique numeric ID> }

    3. destroy-銷毀房間

  • ?論是靜態(tài)還是動態(tài)的房間,都可以? destroy 進(jìn)?銷毀。
  • 1. 請求body

    {"request" : "destroy","room" : <unique numeric ID of the room to destroy>,"secret" : "<room secret, mandatory if configured>","permanent" : <true|false, whether the room should be also removed from the config file, default=false> }

    2. 成功響應(yīng)-destroyed

    {"videoroom" : "destroyed","room" : <unique numeric ID> }

    3. 房間用戶接收的事件-event

  • 當(dāng)房間被destroy時,其他所有參與者都會收到這個事件,獲知房間被銷毀
  • {"videoroom" : "destroyed","room" : <unique numeric ID of the destroyed room> }

    4. exist-房間是否存在

    1. 請求body

    {"request" : "exists","room" : <unique numeric ID of the room to check> }

    2. 成功響應(yīng)-success

    {"videoroom" : "success","room" : <unique numeric ID>,"exists" : <true|false> }

    5. allowd-出入管理

  • 可以配置是否檢查tokens,或者添加/刪除增加/刪除允許加?房間的?戶。
  • 1. 請求body

    {"request" : "allowed","secret" : "<room secret, mandatory if configured>","action" : "enable|disable|add|remove","room" : <unique numeric ID of the room to update>,"allowed" : [// Array of strings (tokens users might pass in "join", only for add|remove)] }

    2. 成功響應(yīng)-success

    {"videoroom" : "success","room" : <unique numeric ID>,"allowed" : [// Updated, complete, list of allowed tokens (only for enable|add|remove)] }

    6. kick-踢出房間

  • 房間的管理員可以通過 kick ?法將指定參與者踢出房間。注意,只是能將他踢出房間,并不能阻?他再次進(jìn)?。若想阻?他再次進(jìn)?,則需要使? allowed 對他進(jìn)?限制
  • 1. 請求body

    {"request" : "kick","secret" : "<room secret, mandatory if configured>","room" : <unique numeric ID of the room>,"id" : <unique numeric ID of the participant to kick> }

    2. 成功響應(yīng)-success

    {"videoroom" : "success", }

    7. list-房間列表

  • ?于展示公開的所有房間
  • 1. 請求body

    {"request" : "list" }

    2. 成功響應(yīng)-success

    {"videoroom" : "success","list" : [ // Array of room objects{ // Room #1"room" : <unique numeric ID>,"description" : "<Name of the room>","pin_required" : <true|false, whether a PIN is required to join this room>,"is_private" : <true|false, whether this room is 'private' (as in hidden) or not>,"max_publishers" : <how many publishers can actually publish via WebRTC at the same time>,"bitrate" : <bitrate cap that should be forced (via REMB) on all publishers by default>,"bitrate_cap" : <true|false, whether the above cap should act as a limit to dynamic bitrate changes by publishers (optional)>,"fir_freq" : <how often a keyframe request is sent via PLI/FIR to active publishers>,"require_pvtid": <true|false, whether subscriptions in this room require a private_id>,"require_e2ee": <true|false, whether end-to-end encrypted publishers are required>,"notify_joining": <true|false, whether an event is sent to notify all participants if a new participant joins the room>,"audiocodec" : "<comma separated list of allowed audio codecs>","videocodec" : "<comma separated list of allowed video codecs>","opus_fec": <true|false, whether inband FEC must be negotiated (note: only available for Opus) (optional)>,"video_svc": <true|false, whether SVC must be done for video (note: only available for VP9 right now) (optional)>,"record" : <true|false, whether the room is being recorded>,"rec_dir" : "<if recording, the path where the .mjr files are being saved>","lock_record" : <true|false, whether the room recording state can only be changed providing the secret>,"num_participants" : <count of the participants (publishers, active or not; not subscribers)>"audiolevel_ext": <true|false, whether the ssrc-audio-level extension must be negotiated or not for new publishers>,"audiolevel_event": <true|false, whether to emit event to other users about audiolevel>,"audio_active_packets": <amount of packets with audio level for checkup (optional, only if audiolevel_event is true)>,"audio_level_average": <average audio level (optional, only if audiolevel_event is true)>,"videoorient_ext": <true|false, whether the video-orientation extension must be negotiated or not for new publishers>,"playoutdelay_ext": <true|false, whether the playout-delay extension must be negotiated or not for new publishers>,"transport_wide_cc_ext": <true|false, whether the transport wide cc extension must be negotiated or not for new publishers>},// Other rooms] }

    8. listparticipants列出房間的參與者

  • 可以使?listparticipants列出房間的參與者。
  • 1. 請求body

    {"request" : "listparticipants","room" : <unique numeric ID of the room> }

    2. 成功響應(yīng)-participants

    {"videoroom" : "participants","room" : <unique numeric ID of the room>,"participants" : [ // Array of participant objects{ // Participant #1"id" : <unique numeric ID of the participant>,"display" : "<display name of the participant, if any; optional>","publisher" : "<true|false, whether user is an active publisher in the room>","talking" : <true|false, whether user is talking or not (only if audio levels are used)>},// Other participants] }

    4. VideoRoom Publishers

  • 發(fā)布者和訂閱者在房間?有不同的屬性。
  • 發(fā)布者 Publisher
  • 活躍的發(fā)布者 active publisher
  • 不活躍的發(fā)布者 passive publisher
  • 訂閱者 Subscriber
  • 在Video Room中,發(fā)布者(Publisher)是將多媒體數(shù)據(jù)發(fā)布在房間中的參與者,他們可以成為 feeds讓其他?戶進(jìn)?訂閱(subscribe)。
  • 1. join-加入房間

  • 可以通過 join 請求將指定的 handle 指定為 publisher 或 subscriber 。
  • 指定為 publisher :Janus 會將指定?戶添加到房間中的參與者列表( the list ofparticipants )中,此后,參與者可以接受到房間中關(guān)于 handle 的?系列通知(包括流的可?與移除)。
  • 指定為 subscriber :
  • 1. 請求body

    {"request" : "join","ptype" : "publisher","room" : <unique ID of the room to join>,"id" : <unique ID to register for the publisher; optional, will be chosen by the plugin if missing>,"display" : "<display name for the publisher; optional>","token" : "<invitation token, in case the room has an ACL; optional>" }

    2. 成功響應(yīng)-joined

  • 成功 join ?房間后,將會接收到當(dāng)前房間中活躍的 publishers 的列表。
  • {"videoroom" : "joined","room" : <room ID>,"description" : <description of the room, if available>,"id" : <unique ID of the participant>,"private_id" : <a different unique ID associated to the participant; meant to be private>,"publishers" : [{"id" : <unique ID of active publisher #1>,"display" : "<display name of active publisher #1, if any>","streams" : [{"type" : "<type of published stream #1 (audio|video|data)">,"mindex" : "<unique mindex of published stream #1>","mid" : "<unique mid of of published stream #1>","disabled" : <if true, it means this stream is currently inactive/disabled (and so codec, description, etc. will be missing)>,"codec" : "<codec used for published stream #1>","description" : "<text description of published stream #1, if any>","moderated" : <true if this stream audio has been moderated for this participant>,"simulcast" : "<true if published stream #1 uses simulcast (VP8 and H.264 only)>","svc" : "<true if published stream #1 uses SVC (VP9 only)>","talking" : <true|false, whether the publisher stream has audio activity or not (only if audio levels are used)>,},// Other streams, if any],"talking" : <true|false, whether the publisher is talking or not (only if audio levels are used); deprecated, use the stream specific ones>,},// Other active publishers],"attendees" : [ // Only present when notify_joining is set to TRUE for rooms{"id" : <unique ID of attendee #1>,"display" : "<display name of attendee #1, if any>"},// Other attendees] }
  • 當(dāng)房間配置了 notify_joining 為 TRUE 時,也會返回不推流的參與者。
  • private_id :該屬性?于訂閱,便于插件對其進(jìn)?關(guān)聯(lián)。
  • attendees:當(dāng)notify_joining=true時返回。
  • 3. 關(guān)于不活躍的發(fā)布者進(jìn)出通知

  • 不活躍的發(fā)布者加?房間不會通知其他參與者,因?yàn)?個?房間中可能會有很多參與者,如果每?個進(jìn)?離開都需要通知所有?的話會顯得太過于繁瑣。如果開發(fā)者它進(jìn)出房間也通知所有?,那么需要將房間的notify_joining 配置為 true 。通知的事件如下:
  • {"videoroom" : "event","room" : <room ID>,"joining" : {"id" : <unique ID of the new participant>,"display" : "<display name of the new participant, if any>"} }

    2. publish-發(fā)布

  • 發(fā)布者帶著 Offer 向 Janus 進(jìn)?協(xié)商
  • publish 請求必須攜帶著 JSEP SDP offer去協(xié)商?個新的 PeerConnection,即插件會檢查編碼器和碼率是否是房間所?持的,之后將會回應(yīng)?個 JSEP SDP answer 來關(guān)閉循環(huán)并完成配置?個PeerConnection。當(dāng)指定的 PeerConnection 搭建好后,該指定的 publisher 才會變成?個活躍的publisher,之后其他參與者才可以訂閱它。
  • 1. 請求body

    {"request" : "publish","audiocodec" : "<audio codec to prefer among the negotiated ones; optional>","videocodec" : "<video codec to prefer among the negotiated ones; optional>","bitrate" : <bitrate cap to return via REMB; optional, overrides the global room value if present>,"record" : <true|false, whether this publisher should be recorded or not; optional>,"filename" : "<if recording, the base path/file to use for the recording files; optional>","display" : "<new display name to use in the room; optional>","audio_level_average" : "<if provided, overrided the room audio_level_average for this user; optional>","audio_active_packets" : "<if provided, overrided the room audio_active_packets for this user; optional>","display" : "<new display name to use in the room; optional>","descriptions" : [ // Optional{"mid" : "<unique mid of a stream being published>","description" : "<text description of the stream (e.g., My front webcam)>"},// Other descriptions, if any]}
  • audio:是否轉(zhuǎn)發(fā)?頻;
  • video:是否轉(zhuǎn)發(fā)視頻;
  • data:是否轉(zhuǎn)發(fā)數(shù)據(jù);
  • 該請求和JSEP SDP offer?起提供,插件收到此消息后,將協(xié)商與之匹配的 JSEP SDP Answer 。
  • 2. 成功響應(yīng)-event

    {"videoroom" : "event","configured" : "ok" }

    3. configure-配置(開始發(fā)布)

  • publish 和 configure 在功能上時相同的,他們都有開始發(fā)布的功能。從語義上, publish 更加合適。但是 configure 可以更新發(fā)布者會話的某些屬性。總的來說 configure 的功能更加強(qiáng)?。
  • 1. 請求body

    {"request" : "configure","bitrate" : <bitrate cap to return via REMB; optional, overrides the global room value if present (unless bitrate_cap is set)>,"keyframe" : <true|false, whether we should send this publisher a keyframe request>,"record" : <true|false, whether this publisher should be recorded or not; optional>,"filename" : "<if recording, the base path/file to use for the recording files; optional>","display" : "<new display name to use in the room; optional>","audio_active_packets" : "<new audio_active_packets to overwrite in the room one; optional>","audio_level_average" : "<new audio_level_average to overwrite the room one; optional>","mid" : <mid of the m-line to refer to for this configure request; optional>,"send" : <true|false, depending on whether the media addressed by the above mid should be relayed or not; optional>,"descriptions" : [// Updated descriptions for the published streams; see "publish" for syntax; optional] }

    2. 成功響應(yīng)-event

    {"videoroom" : "event","configured" : "ok" }

    4. joinandconfigure-加入并配置(加入并且發(fā)布)

    1. 請求body

  • 參考join請求用的body,并攜帶 JSEP SDP offer
  • 2. 成功響應(yīng)-joined

  • 成功響應(yīng)將是?個 joined 事件,并且攜帶 JSEP SDP answer。
  • 5. 發(fā)布成功后推送

  • 當(dāng)?個?戶在房間中發(fā)布成功后,Janus 將會發(fā)送?個關(guān)于新對端的事件給所有參與者,事件如下:
  • {"videoroom" : "event","room" : <room ID>,"publishers" : [{"id" : <unique ID of the new publisher>,"display" : "<display name of the new publisher, if any>","streams" : [{"type" : "<type of published stream #1 (audio|video|data)">,"mindex" : "<unique mindex of published stream #1>","mid" : "<unique mid of of published stream #1>","disabled" : <if true, it means this stream is currently inactive/disabled (and so codec, description, etc. will be missing)>,"codec" : "<codec used for published stream #1>","description" : "<text description of published stream #1, if any>","moderated" : <true if this stream audio has been moderated for this participant>,"simulcast" : "<true if published stream #1 uses simulcast (VP8 and H.264 only)>","svc" : "<true if published stream #1 uses SVC (VP9 only)>","talking" : <true|false, whether the publisher stream has audio activity or not (only if audio levels are used)>,},// Other streams, if any],"talking" : <true|false, whether the publisher is talking or not (only if audio levels are used); deprecated, use the stream specific ones>,}] }

    6. unpublish-停止發(fā)布

  • unpublish 請求?于停?發(fā)布并且銷毀相關(guān)的 PeerConnection,并且將發(fā)布者從活躍流列表中移除。
  • 1. 請求body

    {"request" : "unpublish" }

    2. 成功響應(yīng)-event

    {"videoroom" : "event","unpublished" : "ok" }

    3. 其他成員通知

  • ?旦PeerConnections斷開,房間內(nèi)的其他參與者會通過下?這個通知得知此事
  • {"videoroom" : "event","room" : <room ID>,"unpublished" : <unique ID of the publisher who unpublished> }
  • 可以在同?個 handle 中多次發(fā)布和取消發(fā)布流
  • configure 基本上與 publish 的屬性相同。這就是為什么兩個請求都可以?來開始發(fā)布的原因。如果configure 成功,則返回 configured 事件,格式如下:
  • {"videoroom" : "event","configured" : "ok" }
  • 當(dāng)發(fā)送 configure 請求RTP擴(kuò)展 ssrc-audio-level 時,如果 audiolevel_event 設(shè)置為true ,則可能會向所有發(fā)布者發(fā)送?些臨時事件。這些事件將具有以下格式:
  • {"videoroom" : <"talking"|"stopped-talking", whether the publisher started or stopped talking>,"room" : <unique numeric ID of the room the publisher is in>,"id" : <unique numeric ID of the publisher>,"audio-level-dBov-avg" : <average value of audio level, 127=muted, 0='too loud'> }

    7. RTP轉(zhuǎn)發(fā)器

  • VideoRoom 插件的主要?的是從WebRTC源(發(fā)布者)獲取媒體,并將其轉(zhuǎn)發(fā)到WebRTC?的地(訂閱者),但實(shí)際上存在?種?案,可以將媒體轉(zhuǎn)發(fā)給外部(不?定與WebRTC兼容)組件。例如,?于媒體處理,外部錄制,轉(zhuǎn)碼,級聯(lián)等等。 rtp_forward 顧名思義,就是將發(fā)布者發(fā)送的RTP包(普通或加密)實(shí)時轉(zhuǎn)發(fā)到遠(yuǎn)程后端。
  • 可以使? rtp_forward 請求為現(xiàn)有發(fā)布者添加新的RTP轉(zhuǎn)發(fā)器,其格式如下:
  • {"request" : "rtp_forward","room" : <unique numeric ID of the room the publisher is in>,"publisher_id" : <unique numeric ID of the publisher to relay externally>,"host" : "<host address to forward the RTP and data packets to>","host_family" : "<ipv4|ipv6, if we need to resolve the host address to an IP; by default, whatever we get>","streams" : [{"mid" : "<mid of publisher stream to forward>","host" : "<host address to forward the packets to; optional, will use global one if missing>","host_family" : "<optional, will use global one if missing>","port" : <port to forward the packets to>,"ssrc" : <SSRC to use to use when forwarding; optional, and only for RTP streams, not data>,"pt" : <payload type to use when forwarding; optional, and only for RTP streams, not data>,"rtcp_port" : <port to contact to receive RTCP feedback from the recipient; optional, and only for RTP streams, not data>,"simulcast" : <true|false, set to true if the source is simulcast and you want the forwarder to act as a regular viewer (single stream being forwarded) or false otherwise (substreams forwarded separately); optional, default=false>,"port_2" : <if video and simulcasting, port to forward the packets from the second substream/layer to>,"ssrc_2" : <if video and simulcasting, SSRC to use to use the second substream/layer; optional>,"pt_2" : <if video and simulcasting, payload type to use the second substream/layer; optional>,"port_3" : <if video and simulcasting, port to forward the packets from the third substream/layer to>,"ssrc_3" : <if video and simulcasting, SSRC to use to use the third substream/layer; optional>,"pt_3" : <if video and simulcasting, payload type to use the third substream/layer; optional>,},{.. other streams, if needed..}],"srtp_suite" : <length of authentication tag (32 or 80); optional>,"srtp_crypto" : "<key to use as crypto (base64 encoded key as in SDES); optional>" }
  • 如果配置了admin_key屬性,則在請求中也需要提供它,否則未授權(quán)的請求將被拒絕。默認(rèn)情況下,沒有對rtp_forward進(jìn)?限制。
  • 如果請求成功則返回 rtp_forward 響應(yīng),其中格式如下:
  • {"videoroom" : "rtp_forward","room" : <unique numeric ID, same as request>,"publisher_id" : <unique numeric ID, same as request>,"forwarders" : [{"stream_id" : <unique numeric ID assigned to this forwarder, if any>,"type" : "<audio|video|data>","host" : "<host this forwarder is streaming to, same as request if not resolved>","port" : <port this forwarder is streaming to, same as request if configured>,"local_rtcp_port" : <local port this forwarder is using to get RTCP feedback, if any>,"remote_rtcp_port" : <remote port this forwarder is getting RTCP feedback from, if any>,"ssrc" : <SSRC this forwarder is using, same as request if configured>,"pt" : <payload type this forwarder is using, same as request if configured>,"substream" : <video substream this video forwarder is relaying, if any>,"srtp" : <true|false, whether the RTP stream is encrypted (not used for data)>},// Other forwarders, if configured] }
  • 要停?以前創(chuàng)建的RTP轉(zhuǎn)發(fā)器,可以使? stop_rtp_forward 請求,其格式如下:
  • {"request" : "stop_rtp_forward","room" : <unique numeric ID of the room the publisher is in>,"publisher_id" : <unique numeric ID of the publisher to update>,"stream_id" : <unique numeric ID of the RTP forwarder> }
  • 請求成功,則返回 stop_rtp_forward 響應(yīng):
  • {"videoroom" : "stop_rtp_forward","room" : <unique numeric ID, same as request>,"publisher_id" : <unique numeric ID, same as request>,"stream_id" : <unique numeric ID, same as request> }
  • 如果要獲取特定房間中所有轉(zhuǎn)發(fā)器的列表,可以使? listforwarders 請求,其格式如下:
  • {"request" : "listforwarders","room" : <unique numeric ID of the room>,"secret" : "<room secret; mandatory if configured>" }
  • 請求成功,則返回forwarders響應(yīng),其中包括RTP轉(zhuǎn)發(fā)器列表:
  • {"videoroom" : "forwarders","room" : <unique numeric ID of the room>,"publishers" : [ // Array of publishers with RTP forwarders{ // Publisher #1"publisher_id" : <unique numeric ID of publisher #1>,"forwarders" : [ // Array of RTP forwarders{ // RTP forwarder #1"stream_id" : <unique numeric ID assigned to this RTP forwarder, if any>,"type" : "<audio|video|data>","host" : "<host this forwarder is streaming to>","port" : <port this forwarder is streaming to>,"local_rtcp_port" : <local port this forwarder is using to get RTCP feedback, if any>,"remote_rtcp_port" : <remote port this forwarder getting RTCP feedback from, if any>,"ssrc" : <SSRC this forwarder is using, if any>,"pt" : <payload type this forwarder is using, if any>,"substream" : <video substream this video forwarder is relaying, if any>,"srtp" : <true|false, whether the RTP stream is encrypted>},// Other forwarders for this publisher],},// Other publishers] }
  • 在會議進(jìn)?期間啟?或禁?錄制,您可以使? enable_recording 請求,該請求的格式如下:
  • {"request" : "enable_recording","room" : <unique numeric ID of the room>,"secret" : "<room secret; mandatory if configured>""record" : <true|false, whether participants in this room should be automatically recorded or not>, }
  • 參與者通常也可以通過configure請求來更改??的錄制狀態(tài):這樣做是為了獲得最?的靈活性,可能希望單獨(dú)記錄?些流,?不是全局或?動記錄?些內(nèi)容,到特定?件。

  • 就是說,如果希望確保在啟?全局錄制后參與者不能停?其錄制,或者在不應(yīng)該錄制該會議室的情況下啟動它,那么您應(yīng)該確保在創(chuàng)建會議室時使?lock_record屬性,將其設(shè)置為true。這樣,只有在提供了房間密碼的情況下,才能更改錄制狀態(tài),從?確保只有管理員才能執(zhí)?此操作。

  • 最后,您可以使? leave 請求離開會議室。如果您是會議室中的活動發(fā)布者,這也將隱式取消你的發(fā)布。該leave請求如下所示

  • {"request" : "leave" }
  • 如果成功,響應(yīng)將如下所示:
  • {"videoroom" : "event","leaving" : "ok" }
  • 其他參與者將收到”leave”事件,格式如下:
  • {"videoroom" : "event","room" : <room ID>,"leaving : <unique ID of the participant who left> }
  • 如果是活躍的發(fā)布者,則其他?戶也將收到相應(yīng)的 unpublish 事件,以通知他們該流不再可?。如果只是潛伏?不是發(fā)布者,則其他參與者將僅收到”leave”事件。
  • 5. VideoRoom Subscribers

  • 在 VideoRoom 中,訂閱者(Subscriber)不是參與者,但是他可以準(zhǔn)確接收指定發(fā)布者的媒體數(shù)據(jù)。
  • 通常發(fā)布者發(fā)布了媒體后,訂閱者可以獲取該流進(jìn)?播放。當(dāng)發(fā)布者取消發(fā)布后,訂閱者 handle 也會隨之被移除。除?給訂閱者正確的信息,不然訂閱者是不能單獨(dú)存在的。
  • 1. join-加入房間

    1. 請求body

    {"request" : "join","ptype" : "subscriber","room" : <unique ID of the room to subscribe in>,"feed" : <unique ID of the publisher to subscribe to; mandatory>,"private_id" : <unique ID of the publisher that originated this request; optional, unless mandated by the room configuration>,"streams" : [{"feed" : <unique ID of publisher owning the stream to subscribe to>,"mid" : "<unique mid of the publisher stream to subscribe to; optional>"// Optionally, simulcast or SVC targets (defaults if missing)},// Other streams to subscribe to] }
  • 如果發(fā)布者對房間中的媒體進(jìn)?訂閱,則需要傳? private_id 。
  • 2. 成功響應(yīng)-attached(Offer)

  • 訂閱者成功加?房間并訂閱指定 feed 成功后,Janus 會給予?個 attached 響應(yīng),并且在這個 event中攜帶 JSEP SDP offer,?于進(jìn)?媒體協(xié)商。
  • {"videoroom" : "attached","room" : <room ID>,"streams" : [{"mindex" : <unique m-index of this stream>,"mid" : "<unique mid of this stream>","type" : "<type of this stream's media (audio|video|data)>","feed_id" : <unique ID of the publisher originating this stream>,"feed_mid" : "<unique mid of this publisher's stream>","feed_display" : "<display name of this publisher, if any>","send" : <true|false; whether we configured the stream to relay media>,"ready" : <true|false; whether this stream is ready to start sending media (will be false at the beginning)>},// Other streams in the subscription, if any] }

    2. start-開始訂閱(Answer 對 attached 的訂閱者響應(yīng))

  • 訂閱者接收到含有 attach 的 event 后,獲取??的 JSEP SDP offer 后,將其設(shè)置為遠(yuǎn)程 SDP 后,然后發(fā)送 start 請求并攜帶 JSEP SDP answer。
  • 1. 請求body

    {"request" : "start" }

    2. 成功響應(yīng)-event

    {"videoroom" : "event","started" : "ok" }
  • 當(dāng)訂閱者與Janus媒體協(xié)商完畢后,雙?就會建??條新的 WebRTC PeerConnection。在這之后,Streaming插件將會開始將媒體轉(zhuǎn)發(fā)到訂閱者端。
  • 3. pause-暫停訂閱

    1. 請求body

  • 以通過 pause 和 start 請求對訂閱媒體進(jìn)?臨時的暫停和恢復(fù),此處的 start 不需要攜帶 JSEP SDP answer
  • {"request" : "pause" }

    2. 成功響應(yīng)-event

    {"videoroom" : "event","paused" : "ok" }
  • ?于恢復(fù)的 start 其?法和上?是?致的,注意他不?攜帶 JSEP 即可。
  • 4. configure-配置

  • configure 請求允許動態(tài)修改訂閱者對于媒體訂閱的?些屬性,?如配置?頻和視頻的啟?與禁?,靈活設(shè)置訂閱內(nèi)容。
  • 1. 請求body

    {"request" : "configure","mid" : <mid of the m-line to refer to for this configure request; optional>,"send" : <true|false, depending on whether the mindex media should be relayed or not; optional>,"substream" : <substream to receive (0-2), in case simulcasting is enabled; optional>,"temporal" : <temporal layers to receive (0-2), in case simulcasting is enabled; optional>,"fallback" : <How much time (in us, default 250000) without receiving packets will make us drop to the substream below>,"spatial_layer" : <spatial layer to receive (0-2), in case VP9-SVC is enabled; optional>,"temporal_layer" : <temporal layers to receive (0-2), in case VP9-SVC is enabled; optional>,"audio_level_average" : "<if provided, overrides the room audio_level_average for this user; optional>","audio_active_packets" : "<if provided, overrides the room audio_active_packets for this user; optional>","restart" : <trigger an ICE restart; optional> }
  • audio 、 video 和 data :可以在媒體層( media-level )上進(jìn)?暫停與恢復(fù),對? pause 和start 直接作?所有?視頻流??,它更加靈活。
  • substream 和 temporal : The substream and temporal properties, instead, only make sense when the mountpoint is configured with video simulcasting support, and as such the viewer is interested in receiving a specific substream or temporal layer, rather than any other of the available ones.
  • spatial_layer 和 temporal_layer :The spatial_layer and temporal_layer have exactly the same meaning, but within the context of VP9-SVC publishers, and will have no effect on subscriptions associated to regular publishers.
  • 5. switch-切換

  • switch 適?于已經(jīng)與 Janus 成功建? PeerConnection 的訂閱者,通過這個請求完成訂閱的切換,就像看電視切換頻道?樣。這樣做的好處就是能復(fù)??條連接,在切換訂閱?標(biāo)的時候不需要重新建?連接,消耗不必要的資源。
  • 但是他也有以下的限制:
  • 不能只換?視頻流的其中?個,要都換
  • 兩個?標(biāo)發(fā)布者必須使??樣的配置,?如?樣的編碼器、?樣的數(shù)據(jù)格式(不?樣的話會導(dǎo)致延遲甚?直接?屏沒聲?)
  • 1. 請求body

    {"request" : "switch","streams" : [{"feed" : <unique ID of the publisher the new source is from>,"mid" : "<unique mid of the source we want to switch to>","sub_mid" : "<unique mid of the stream we want to pipe the new source to>"},{// Other updates, if any}] }

    2. 成功響應(yīng)-event

    {"videoroom" : "event","switched" : "ok","room" : <room ID>,"changes" : <number of successful changes (may be smaller than the size of the streams array provided in the request)>,"streams" : [// Current configuration of the subscription, same format as when subscribing// Will contain info on all streams, not only those that have been updated] }

    6. leave-離開房間

  • leave 請求?于停?訂閱并銷毀相關(guān)的 PeerConnection,由于上下?是隱式的,所以不需要其他參數(shù)
  • 1. 請求body

    {"request" : "leave" }

    2. 成功響應(yīng)-event

    {"videoroom" : "event","left" : "ok", }

    總結(jié)

    以上是生活随笔為你收集整理的Janus流媒体服务器信令分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    国产精品第二十页 | 久久免费观看少妇a级毛片 久久久久成人免费 | 91.精品高清在线观看 | 欧美精品国产综合久久 | 国产免费国产 | 亚洲电影久久久 | 久草视频99| 久久看看 | 天天玩天天干天天操 | 91亚洲精品久久久久图片蜜桃 | 国产精品久久久久久久午夜片 | 午夜日b视频 | 97成人资源 | 天天操夜操 | 日本三级久久 | 狠狠干中文字幕 | 成人在线观看免费视频 | 黄色午夜网站 | av在线一| 国产精品美女久久久久久久 | 91日韩在线 | 精品国产乱码久久久久 | av先锋影音少妇 | 久久精品综合 | 中文字幕在线视频免费播放 | 精品一区二区在线看 | 欧美俄罗斯性视频 | 中文字幕乱码视频 | 成人精品久久久 | 久久成电影 | 国产亚洲精品日韩在线tv黄 | 成人四虎影院 | av一级免费| 亚洲做受高潮欧美裸体 | 中文在线免费观看 | 久久久91精品国产一区二区精品 | 亚洲午夜久久久久久久久电影网 | 超碰在线97免费 | 欧美日韩在线视频观看 | 国产精品久久婷婷六月丁香 | 中文字幕在线网址 | 久草在线这里只有精品 | 五月婷婷丁香色 | 99久久婷婷国产综合精品 | 欧美欧美| 日本一区二区三区视频在线播放 | 婷婷丁香六月天 | 麻豆视频在线观看免费 | www.久草视频 | av资源网在线播放 | 国产乱码精品一区二区三区介绍 | 日韩字幕 | 中文字幕一区二区三区乱码在线 | 日韩v欧美v日本v亚洲v国产v | 国产成人一区二区三区在线观看 | 五月天婷婷在线观看视频 | 91丨九色丨国产女 | 久久精品视频免费播放 | 在线三级中文 | 欧美午夜性生活 | 亚洲成人频道 | 手机在线看永久av片免费 | 亚洲最新视频在线播放 | 三级黄色理论片 | 午夜久久福利视频 | 欧美国产大片 | 国产一区二区三区视频在线 | 亚洲精品成人免费 | 91精品久久久久久综合乱菊 | 亚洲成人av一区 | 黄色.com| 综合成人在线 | 国产美女视频免费观看的网站 | 激情五月婷婷综合网 | 亚洲精品国偷自产在线91正片 | 亚洲一区精品二人人爽久久 | 在线观看中文字幕 | 91资源在线免费观看 | 99热 精品在线 | 97超视频| 欧美亚洲精品在线观看 | 亚洲资源网 | 国产精品久久久久久久久久尿 | 男女男视频 | 岛国av在线免费 | 四川bbb搡bbb爽爽视频 | 91一区一区三区 | 天天操天天色天天 | 天天爽夜夜爽人人爽一区二区 | 国产成人久久精品一区二区三区 | 亚洲精选视频免费看 | 国产精品免费不 | 在线看岛国av | 成人avav| 久久一区二区三区国产精品 | 亚洲综合国产精品 | 午夜国产一区二区三区四区 | 日韩高清在线观看 | 日本公妇在线观看高清 | 一本一道波多野毛片中文在线 | 超碰97中文 | 中文字幕黄色网 | 亚洲欧美在线视频免费 | 伊人黄| 麻豆传媒视频观看 | 97在线精品国自产拍中文 | 97在线视频免费观看 | 国产字幕在线看 | 91你懂的 | 国产午夜av | 五月激情久久 | 国内亚洲精品 | 日韩精品一区在线观看 | 久久成人国产精品 | 又色又爽又黄 | 99国产精品一区 | 国产精品99在线观看 | 国产在线不卡 | 一区二区三区在线免费 | 精品国产aⅴ麻豆 | www免费黄色 | 在线观看深夜福利 | 日韩欧美视频 | 亚洲视频 中文字幕 | 亚州精品在线视频 | 国产+日韩欧美 | 麻豆一二 | 美女视频a美女大全免费下载蜜臀 | 久久久久久激情 | 久久久久久蜜av免费网站 | 久久午夜国产精品 | 婷婷中文字幕在线观看 | 天天干天天操天天 | 五月婷婷综合激情 | 狠狠操导航 | 99精品免费 | 人人讲下载 | 精品国产一区二区三区久久久蜜月 | 激情欧美网 | 911精品美国片911久久久 | 天天操欧美 | 亚洲精品视频在线观看免费视频 | 热re99久久精品国产66热 | 国产高清福利在线 | 久久最新视频 | 免费视频资源 | 正在播放五月婷婷狠狠干 | 中国一级片在线 | 精品国偷自产在线 | 免费www视频| 精品亚洲va在线va天堂资源站 | 日韩一二区在线观看 | 99视频导航 | www色av| 91在线免费播放视频 | 毛片一级免费一级 | 国产在线观看一区 | 国产一级免费在线观看 | 狠狠地日 | 国产高清av免费在线观看 | 亚洲综合激情五月 | 日韩美精品视频 | 91丨九色丨91啦蝌蚪老版 | 豆豆色资源网xfplay | 婷婷开心久久网 | 久久综合婷婷国产二区高清 | 精品欧美乱码久久久久久 | 97国产在线 | 亚洲一区精品二人人爽久久 | 操操操人人人 | 亚洲四虎影院 | 亚洲日本黄色 | 超碰97中文 | 又色又爽又激情的59视频 | 婷婷六月天丁香 | 日韩3区 | 国产精品免费观看国产网曝瓜 | 久久久久女教师免费一区 | 国产黄色一级大片 | 亚洲精品大全 | 6080yy午夜一二三区久久 | 国产999视频在线观看 | 午夜精品视频在线 | 黄色成人在线 | 亚洲专区在线播放 | 国产高清在线观看 | 在线精品视频在线观看高清 | 日韩在线免费高清视频 | 日韩欧美一区二区在线 | 国产污视频在线观看 | 国产免费三级在线观看 | 91香蕉嫩草 | 免费黄色在线网址 | 五月综合 | 免费高清在线视频一区· | 香蕉视频国产在线观看 | 成年人视频在线免费观看 | 久久歪歪 | 欧美二区视频 | 久久综合精品国产一区二区三区 | 免费在线成人av电影 | 免费99| 国产不卡精品 | 成人h在线观看 | av电影中文字幕 | 久久乐九色婷婷综合色狠狠182 | 9999国产| 欧美日韩二三区 | 国产精品久久久久久久久久久久午夜 | 超碰人人99 | 伊人天天干 | 婷婷丁香在线观看 | 中文字幕观看在线 | 日韩精品一卡 | 免费黄色网址大全 | 中文字幕在线看人 | 摸bbb搡bbb搡bbbb| 麻豆视频在线免费 | 日韩超碰在线 | 国产专区在线视频 | 天天操天天操一操 | 国产第一页福利影院 | 午夜免费福利片 | 国产黄色免费看 | 久久手机免费观看 | 天天射狠狠干 | 91cn国产在线 | 中文字幕资源网 国产 | 天天操天天色天天 | 日本狠狠干 | 97视频中文字幕 | 亚洲精品国产精品国自产观看 | 国产成人a亚洲精品 | 2018精品视频| 黄色在线看网站 | av日韩国产 | 二区在线播放 | 97视频人人免费看 | 日韩天堂在线观看 | 婷婷丁香av| 久久在现 | 婷婷av网站 | 欧美精品久久久久久久久久白贞 | 二区三区精品 | 在线观看国产成人av片 | 一区二区三区 中文字幕 | 一区二区三区不卡在线 | 国产黄色片免费观看 | 国产尤物在线 | 一级黄色片在线 | 四虎影视8848aamm| 久久久精品国产免费观看同学 | 欧美日韩一区二区在线 | 99re国产视频 | 久久公开免费视频 | 久久不射网站 | 欧美在线视频第一页 | 成人免费在线播放视频 | 91资源在线免费观看 | 久久久福利视频 | 在线观看va | 国产在线观看你懂得 | 九七在线视频 | 天天干天天做 | 亚洲国产精品久久久久婷婷884 | 中文字幕一二 | 日韩二区三区在线观看 | 国产视频一二区 | 日韩在线观看电影 | 久久久久国产一区二区三区四区 | 精品久久精品久久 | 国产精品乱码一区二区视频 | 成年人在线观看免费视频 | 97超碰国产精品 | 亚洲 欧美日韩 国产 中文 | 激情小说网站亚洲综合网 | 日韩免费电影网 | 最新真实国产在线视频 | av电影在线观看完整版一区二区 | 国产精品午夜免费福利视频 | 二区视频在线观看 | 天天综合网在线观看 | 国产精成人品免费观看 | 一区二区精品在线视频 | 国产精品久久久亚洲 | 欧美精品久久久 | 99精品国产兔费观看久久99 | 国内外成人在线 | 亚洲午夜久久久久久久久 | 日韩成人精品一区二区三区 | 黄色一区二区在线观看 | 在线中文视频 | 亚洲日日夜夜 | 在线成人免费电影 | 碰天天操天天 | 成片免费观看视频 | 黄色毛片一级 | 正在播放亚洲精品 | 精品高清视频 | 操操操日日 | 在线中文字幕观看 | 久久精品一二区 | 欧美日韩国产亚洲乱码字幕 | 成年人视频在线免费播放 | 亚洲区视频在线观看 | 久久久久免费精品 | 久久久久久高潮国产精品视 | 婷婷色狠狠 | 久久国产精品一区二区三区 | 波多野结衣视频网址 | 99精品免费久久久久久日本 | 免费网站黄 | 人人爽人人做 | 97视频亚洲 | 国产精久久 | 黄色网址在线播放 | 一二三久久久 | 日韩成人av在线 | 久久99国产视频 | 精品久久久久一区二区国产 | 一区在线免费观看 | 夜色资源站wwwcom | 欧美久久影院 | 黄色福利视频网站 | 欧美日韩精品在线播放 | 国产福利精品一区二区 | 久久久久久久久久久免费视频 | 麻豆精品视频 | 亚洲视频,欧洲视频 | 日韩av看片 | 色综合久久久久综合体桃花网 | 中文字幕在线观看你懂的 | 欧美日韩裸体免费视频 | 日韩欧美久久 | 精品国产成人在线影院 | 国产精品99久久久久久久久久久久 | 狠狠躁夜夜躁人人爽视频 | 午夜精品久久久久久99热明星 | 国产精品久久久久国产精品日日 | 六月婷婷久香在线视频 | 天天天天爱天天躁 | 中文字幕在线第一页 | 欧美精品一区二区三区一线天视频 | 97在线看 | 成 人 黄 色 片 在线播放 | 久久xxxx| 国产一级片免费视频 | 日本视频久久久 | 国产va在线 | 国产精品毛片久久久久久久久久99999999 | 激情五月婷婷丁香 | 国产自产在线视频 | 国产中文字幕在线看 | 日本久久影视 | 精品国产一区二区三区四区vr | 日韩在线观看中文字幕 | 国产黄色一级大片 | 夜夜躁日日躁狠狠久久av | 日韩免费视频线观看 | 亚洲综合视频网 | 欧美成人一区二区 | a天堂最新版中文在线地址 久久99久久精品国产 | 国产亚洲精品久久久久久电影 | 91色网址 | 五月视频 | 成人a毛片 | 91视频免费 | 婷婷丁香狠狠爱 | 在线免费高清一区二区三区 | 久草青青在线观看 | 国产99久久99热这里精品5 | 天天操网址 | 久久色亚洲| 天天操夜夜叫 | 在线视频91 | 午夜视频福利 | 国语精品免费视频 | 激情综合亚洲精品 | 国产精品大全 | 美女久久网站 | 天天色天天色 | 九九视频网站 | 91大神精品视频在线观看 | 日本特黄一级 | 国产亚洲无 | 婷婷av资源| 久久免费看 | 亚洲一级免费观看 | 国产在线观看h | 国产免费又爽又刺激在线观看 | 国产精品原创 | 91成人精品一区在线播放 | www..com毛片 | 久久电影网站中文字幕 | 一级一片免费视频 | 日韩av美女| 久久天天躁夜夜躁狠狠85麻豆 | 亚洲综合视频在线播放 | 亚洲成av人影院 | 日韩视频一区二区 | 99自拍视频在线观看 | 国产精品久久久久久a | 永久免费看av | 亚洲婷婷在线视频 | 亚洲一区二区三区在线看 | 天天色天天操综合 | 青青草国产精品视频 | 免费看片色 | 亚洲欧洲精品视频 | 韩国在线一区 | 午夜久久久久久久 | 玖玖在线看 | 在线观看视频亚洲 | 成人毛片在线观看视频 | 日韩在线观看免费 | 国产视频观看 | 中文字幕文字幕一区二区 | 日韩久久网站 | 天天操天天弄 | 国产精品网红直播 | 91视频一8mav | 久久电影色 | 99 久久久久 | 久久精品视 | 粉嫩av一区二区三区免费 | 久久国产精品免费一区 | 免费av网址大全 | 免费av网址在线观看 | 亚洲永久精品一区 | 13日本xxxxxⅹxxx20 | 午夜av影院 | 国产精品自产拍在线观看蜜 | 99色国产 | 国产一区免费看 | 天天插天天狠 | 国产一区二区三区在线 | 国产99久久久国产精品 | 免费观看十分钟 | 欧美日韩视频精品 | 永久免费观看视频 | 在线黄色免费 | 精品国产激情 | 手机成人在线电影 | 人人干免费 | 日韩欧美视频一区二区三区 | 日韩免费观看av | 日本天天色| 国产免费又爽又刺激在线观看 | 亚洲激情婷婷 | 色综合天天综合在线视频 | 久久免费福利视频 | 91福利视频免费 | 亚洲成人第一区 | 亚洲成aⅴ人片久久青草影院 | 五月婷久久 | 日韩在线观看视频中文字幕 | 久久久久久久久影院 | 四虎永久免费网站 | 日本婷婷色 | 亚洲一二三区精品 | 久久久国产精品一区二区三区 | 久热av | 日韩在线观看网站 | 日韩在线视频一区二区三区 | 嫩草av在线 | 国产日本在线观看 | 国产精品亚洲综合久久 | 久久国产成人午夜av影院潦草 | 成人免费观看av | 日韩精品视频免费专区在线播放 | 久久精品久久99 | 国产精品国产精品 | 久久久久久久久久久久av | av中文字幕在线播放 | 日韩亚洲国产精品 | 久久国产精品99久久久久久老狼 | av黄色av| 成人免费在线观看入口 | 美女av免费 | 久久无码av一区二区三区电影网 | 欧美成人精品三级在线观看播放 | 91免费观看 | 欧美日韩亚洲一 | 久久久久女人精品毛片九一 | 亚洲欧美视频在线观看 | 手机成人av| 九草在线观看 | 成人欧美日韩国产 | 日韩一二三区不卡 | 天天操天天干天天爽 | 日韩精品第一区 | 欧美成人在线网站 | 精品麻豆| 麻豆影视在线播放 | 激情五月婷婷综合网 | 欧美精品乱码久久久久 | 成人国产亚洲 | 夜夜操天天干 | 在线免费观看麻豆 | 欧美一级免费片 | 激情av在线资源 | av天天在线观看 | 国产精品自产拍在线观看网站 | 亚洲九九九在线观看 | 五月婷婷深开心 | 亚洲在线网址 | 成人免费观看视频网站 | 国产精品女人网站 | 日韩在线观看精品 | 国产精品福利一区 | 欧美日韩亚洲精品在线 | 一区二区视频免费在线观看 | 日韩在线一级 | 久久综合免费 | 国产成人精品一区二区在线 | 亚洲精品午夜久久久久久久 | 国产成人精品a | 日韩伦理片一区二区三区 | 麻豆视频在线免费 | 国产精品热 | 精品国产一区二区三区久久久蜜臀 | 香蕉影视在线观看 | 91成人精品国产刺激国语对白 | 日韩专区av| 国产一级二级三级在线观看 | 欧美aa在线| 97国产精品亚洲精品 | 国产91精品在线播放 | 亚洲国产成人av网 | 黄色三级免费观看 | 精品一区在线 | 亚洲一级电影在线观看 | 999久久久欧美日韩黑人 | 免费观看第二部31集 | 丁香五月缴情综合网 | japanesefreesex中国少妇 | 亚洲一区二区麻豆 | 国产黄色片一级三级 | 91av视频播放 | 亚洲开心激情 | 国产美女网站视频 | 欧美亚洲一区二区在线 | 综合久久网 | 手机色在线 | 中文字幕大全 | 摸bbb搡bbb搡bbbb | 免费日韩电影 | 天天色天天上天天操 | 97精品国自产拍在线观看 | 激情五月开心 | 丁香婷婷久久久综合精品国产 | 亚洲一区二区三区miaa149 | 啪啪动态视频 | 久草视频2 | 天天综合狠狠精品 | 久久99电影 | 日本精品一区二区三区在线观看 | 国内精品中文字幕 | 日韩精品五月天 | 91在线一区二区 | 97国产电影 | 亚洲国产播放 | 婷婷亚洲综合五月天小说 | 久久精品在线 | 一区二区电影在线观看 | 成人羞羞视频在线观看免费 | 亚洲视频在线免费看 | 亚洲精品视频在线免费播放 | 久久国产三级 | 国产麻豆视频在线观看 | 欧亚久久| 中文字幕亚洲欧美日韩2019 | 中文字幕在线看视频 | 国产九九九视频 | 久久久精品99 | 最近日本mv字幕免费观看 | 成人三级网站在线观看 | 色综合亚洲精品激情狠狠 | 国产va饥渴难耐女保洁员在线观看 | 中文字幕在线观看完整版电影 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 丁香六月激情婷婷 | 国产专区在线视频 | 99婷婷| 国产精品不卡在线 | 精品一区久久 | 成人a级免费视频 | 麻豆视频在线免费 | 97在线观看免费 | 日本mv大片欧洲mv大片 | 日本中文在线观看 | 天天综合网 天天综合色 | 国产一区在线免费观看视频 | 国产精品日韩在线 | 日日爽天天操 | 热九九精品| 欧美国产大片 | 亚洲视频每日更新 | 久久精品在线免费观看 | www.夜夜爽 | 精品 激情| 国产资源免费 | 91三级在线观看 | 日本久久成人中文字幕电影 | 日韩在线免费电影 | 91大神一区二区三区 | 亚洲三级网 | 97夜夜澡人人双人人人喊 | 全黄色一级片 | www免费看| 成人一区二区三区在线观看 | 国产一区二区久久久久 | 欧美性猛片, | 国产高清视频在线播放 | 狠狠色丁香久久婷婷综合_中 | 天天操人人要 | 午夜影院日本 | 天天天天综合 | 911久久 | 91精品国产99久久久久久红楼 | 亚洲精品在线电影 | 99热九九这里只有精品10 | 亚洲 成人 欧美 | 天天射网站| 伊人亚洲综合 | 欧美性生活大片 | 中文字幕一区二区三区四区 | 欧美a√在线 | 国产亚洲日本 | 一区二区三区在线免费观看视频 | 人人插人人玩 | 啪啪av在线 | 久草在线免费资源站 | japanesefreesex中国少妇 | 亚洲伊人色| 夜夜操天天 | 狠狠色丁香婷综合久久 | 在线观看视频福利 | 久久99视频精品 | 日日日天天天 | 麻豆视频免费看 | 欧美 日韩 国产 中文字幕 | 亚洲午夜精品一区二区三区电影院 | 偷拍福利视频一区二区三区 | 亚洲精品国产成人av在线 | 日韩和的一区二在线 | 国产在线高清视频 | 青青草国产精品 | 色射爱| 九九热免费精品视频 | 欧美成年人在线视频 | 国产精成人品免费观看 | 夜夜躁日日躁狠狠久久av | 99热九九这里只有精品10 | 超级碰碰碰碰 | 99婷婷狠狠成为人免费视频 | 中文字幕成人在线 | 超碰日韩在线 | 国产精品欧美日韩在线观看 | 91精品老司机久久一区啪 | 99精品视频中文字幕 | 一区二区精品 | 久久精品www人人爽人人 | 国产成人久久av | 亚洲国产97在线精品一区 | 日韩精品欧美专区 | 98精品国产自产在线观看 | 日本爱爱片 | 中文视频在线 | 久久精品国产成人精品 | 91福利在线导航 | 狂野欧美激情性xxxx欧美 | 精品中文字幕视频 | 在线 国产 亚洲 欧美 | 国产精品激情在线观看 | 久久久精品网站 | 久久理伦片 | 五月婷婷色综合 | 亚洲欧美综合精品久久成人 | 久精品视频在线观看 | 免费福利片 | 狠狠婷婷| 夜夜骑首页 | 国产精品久久久免费看 | 久久国产精品成人免费浪潮 | 亚洲最新视频在线播放 | 国产欧美日韩精品一区二区免费 | 天天爱天天干天天爽 | 91视视频在线直接观看在线看网页在线看 | 久久综合给合久久狠狠色 | 91系列在线 | 91麻豆精品一区二区三区 | 久久99精品久久久久久秒播蜜臀 | 日韩电影在线观看中文字幕 | 一级久久久 | 91免费看片黄 | 黄色毛片大全 | 西西4444www大胆无视频 | 久久曰视频| 中文字幕免费国产精品 | 精品国产午夜 | 日韩成人在线免费观看 | 欧美久久精品 | 久久免费视频1 | 奇米影视四色8888 | 日日夜夜操av | 日韩欧美一区二区三区视频 | 久久精品视频网 | 国产精品久久久久久久久久久久午 | 午夜精品视频在线 | 亚洲乱码国产乱码精品天美传媒 | 天天干天天玩天天操 | 97免费在线观看视频 | 亚洲精品久久久久58 | 久久精品国产久精国产 | 在线免费视频一区 | 99久久99久久精品免费 | 欧美黑人巨大xxxxx | 国模视频一区二区 | 日韩专区av | www.狠狠操| 亚洲一区久久久 | 国内小视频在线观看 | 国产高清av免费在线观看 | 亚洲无人区小视频 | 欧美一二三在线 | 天天操天天射天天舔 | 亚洲韩国一区二区三区 | 亚洲天堂网在线视频观看 | 久久久久久久久久福利 | 日本激情视频中文字幕 | 国产在线a不卡 | 精品国产精品久久一区免费式 | 91麻豆精品国产 | 免费黄色特级片 | 亚洲成人av免费 | 久久五月精品 | 狠狠干婷婷色 | 九七在线视频 | 五月婷在线 | 黄色三级免费 | 97**国产露脸精品国产 | 青青河边草免费视频 | 成人免费在线观看入口 | 亚洲第一av在线播放 | 国内精品福利视频 | 成人av日韩 | 亚洲 成人 欧美 | 久久久三级视频 | 国产一区视频在线观看免费 | 成人97视频一区二区 | 麻豆视频www | 91一区二区三区在线观看 | av 一区二区三区四区 | 日本激情动作片免费看 | 在线观看免费黄视频 | 亚洲精品成人 | 中文字幕一区二区在线播放 | 97精品国产97久久久久久免费 | 2022久久国产露脸精品国产 | 国产中文字幕视频在线观看 | 国产精品 亚洲精品 | 欧美最猛性xxxxx免费 | 在线国产能看的 | 国产在线观看,日本 | 国产精品扒开做爽爽的视频 | 中文字幕av在线不卡 | 日韩综合第一页 | 国产精品白浆视频 | 五月天亚洲综合 | 国产精品一区二区久久 | 狠狠狠狠狠色综合 | 丁香花在线观看视频在线 | 亚洲最新毛片 | 狠狠撸电影 | 国产探花视频在线播放 | 国产一级在线观看 | 色瓜| 超碰在线9 | 在线观看免费观看在线91 | 欧美一级高清片 | 在线电影播放 | 婷婷六月色| 天天草av| 亚洲国产成人久久综合 | 免费看成年人 | 免费观看十分钟 | 男女精品久久 | 在线高清av| 色福利网站 | 日本精品一区二区 | 成人精品国产免费网站 | 2023年中文无字幕文字 | www在线观看视频 | 久久情侣偷拍 | 久久视频这里只有精品 | 日韩一区精品 | 麻豆视频大全 | 国产成人免费观看 | 亚洲一区二区三区毛片 | 久久人人爽人人爽人人片av软件 | 成年人免费看片网站 | 久久天天躁夜夜躁狠狠85麻豆 | 国内精品国产三级国产aⅴ久 | wwwwww黄 | 久久久久综合网 | 日韩午夜电影院 | 黄av在线| 69视频在线 | 国产在线色视频 | 欧美国产日韩一区二区三区 | 成人h在线播放 | 黄色大全免费观看 | 久久99精品久久久久久秒播蜜臀 | 99久久精品国产毛片 | 久久草在线视频国产 | 九九热视频在线播放 | 亚洲电影成人 | 欧美一级性生活片 | 毛片视频电影 | 米奇影视7777| 最新av免费在线观看 | 国内视频 | 天天干,夜夜操 | 欧美激情第28页 | 少妇视频在线播放 | 国产91精品在线播放 | www.天天操.com | 午夜在线观看一区 | 免费十分钟 | 999在线视频 | 国产精品一区二区av日韩在线 | 国产精品久久久久毛片大屁完整版 | 久久这里只有精品1 | 日韩毛片精品 | 国产精品久久久久永久免费看 | 最近日本韩国中文字幕 | 国产一区免费在线观看 | 久久麻豆精品 | 国产亚洲小视频 | 免费看黄在线看 | 午夜精品久久久99热福利 | 97久久精品午夜一区二区 | 超碰在线中文字幕 | 九九热免费视频在线观看 | 国产精品久久久久久久久久ktv | 免费看毛片在线 | 精品成人免费 | 婷婷久久精品 | 91在线日本| 精品美女久久 | 国产精品丝袜久久久久久久不卡 | 9热精品| 婷婷六月激情 | 中日韩欧美精彩视频 | 欧美一级在线观看视频 | 中文在线a天堂 | 色婷婷欧美| 亚洲成av人片在线观看 | 久久理论片 | 久久久国产精品久久久 | 国产美女网站视频 | 国产视频在线播放 | 久久99热国产 | 成人黄色电影免费观看 | 波多野结衣在线播放视频 | 四虎影视成人精品国库在线观看 | 波多野结衣动态图 | 美女国产| 黄色一级大片免费看 | 亚洲国产欧美在线看片xxoo | 日本性生活一级片 | 五月天网站在线 | 国产日韩欧美精品在线观看 | 亚洲国产精品va在线看 | 婷婷在线资源 | 欧美整片sss | 大荫蒂欧美视频另类xxxx | 国产免费一区二区三区最新 | 美女免费网站 | 伊人久久精品久久亚洲一区 | 久久艹人人 | 欧美少妇xxx | 天天激情| 天天爱天天射天天干天天 | 国产91在线看 | www·22com天天操| 99热在线国产精品 | 天天干天天射天天插 | 久香蕉 | 黄色a在线观看 | 日韩视频免费 | 国产99久久久精品视频 | 97精品电影院 | 国产1区2 | 国产一区视频在线播放 | 视频一区二区国产 | 激情婷婷六月 | 久久r精品 | 超碰个人在线 | 人人爽人人乐 | 深夜免费小视频 | 91香蕉视频污在线 | 国产高清99 | 丁香5月婷婷久久 | 亚洲免费在线视频 | 欧美一级视频一区 | 久久不卡国产精品一区二区 | 久久香蕉一区 | 97韩国电影 | 精品国产亚洲一区二区麻豆 | 色综合天天综合 | 国产精品一区二区av麻豆 | 一级片免费观看视频 | 丁香激情五月婷婷 | 九九免费观看全部免费视频 | 天天曰天天爽 | 九九九国产 | 久久精品官网 | 视频在线一区 | 成人黄色片免费 | 久久视频免费在线 | av动态图片 | 丁香电影小说免费视频观看 | 天天操操操操操 | 少妇性bbb搡bbb爽爽爽欧美 | 成年人免费观看国产 | 97成人精品视频在线播放 | 国产高清在线免费视频 | 99精品免费在线 | 中文字幕人成人 | 中文字幕 二区 | 九九精品视频在线 | 国产色视频123区 | 久久久综合九色合综国产精品 | 免费看的黄色 | 久久午夜鲁丝片 | 欧美在线99| 国产精品免费久久久久 | 欧美精品三级在线观看 | 精品在线一区二区 | 国产精品入口久久 | 狠狠躁日日躁 | www.99久久.com | 欧美综合久久 | 久久深夜福利免费观看 | 国产精品成人av电影 | 国产精品视频全国免费观看 | 亚洲精品一区二区三区新线路 | 亚洲最新av在线 | 人人爽人人香蕉 | 日韩在线视频线视频免费网站 | 黄色在线看网站 | 亚洲精品456在线播放 | 九九视频免费在线观看 | 日韩在线视频国产 | 免费视频资源 | 九九九九热精品免费视频点播观看 | 色av网站| 国产中文字幕在线 | 免费特级黄毛片 | 91av社区| 欧美一级片在线播放 | 日韩欧美国产成人 | 成人免费在线视频 | 99精品免费在线 | 日本黄色特级片 | 五月天视频网站 | 国产 一区二区三区 在线 | 国产欧美在线一区二区三区 | 国产精品视频免费看 | 成人a级免费视频 | 久久精品在线 | 成人av电影在线观看 | 亚洲精品合集 | 青青河边草手机免费 | 又黄又爽又刺激 | 成片视频免费观看 | 99色在线视频| 中文国产在线观看 | 欧美黄污视频 | 国产精品99久久久久久小说 | 久久精品国亚洲 | 天天爽天天摸 | 国产亚洲精品久久久久久久久久 | 综合久久久久 | 久久视频精品在线观看 | 欧美激情视频一二区 | 人人爱人人爽 | 91麻豆国产| 在线小视频你懂的 | 97视频久久久 | 视频国产精品 | 免费三级黄色片 | 黄色小说免费观看 | 午夜 免费 | 这里只有精彩视频 | 欧美日韩性视频 |