欢迎大家一起学习探讨通信之WLAN。到目前为止,我们基于“无人机接力游戏竞赛”的“站点”,“名称”,“航道”,“速度”和“动力”,等效到WLAN通信系统中,探讨了“MAC地址”,“SSID”,“信道”,“速率”和“功率”。游戏竞赛信息解释只剩“规则”和“无人机的功能”。同样,等效到WLAN通信系统中为“协议标准”和“WLAN 相关功能”,这两部分包含信息量比较多。

第十二节:通信之WLAN(Miracast)

                                               图 1

    从本节开始,将探讨“协议标准”和“WLAN 相关功能”的概念和技术,原计划“协议标准”应在“WLAN相关功能”之前探讨,但协议标准是比较枯燥乏味,对其探讨次序进行调整。先对常使用“WLAN相关功能”探讨学习,后续再对其“协议标准”探讨。本节将对基于WLAN通信系统的Miracast功能探讨学习。

   好!“Miracast功能”相信有部分伙伴还未使用过。在手机上,该功能被命名为“投屏”,“屏幕投影”,“无线投屏”,“WiFi-Display”等等。该功能也称为WFD(WiFi-Display)。后续所有章节关于支持Miracast功能,将用“WFD”描述。

    先看其功能来源描述:

    Miracast是由Wi-Fi联盟制定发布无线显示标准,WiFi-display协议为其无线显示标准的具体实现。该功能是基于WLAN P2P链路进行数据传输。

   接下来探讨学习Miracast功能实现。支持Miracast功能的设备,在使用该功能时,可做角色“WFD source”或“WFD sink”(发送端和接收端)。

  • “WFD source”:实时将终端的video和audio(视频和音频)数据传输至WFD sink,如下图2所示。

  • “WFD sink”:将接收到的video和audio数据进行处理显示。

第十二节:通信之WLAN(Miracast)

                                              图 2

    WFD source和WFD sink 如何通过WLAN P2P链接进行数据通信的呢?

   在WLAN P2P链路上,WFD设备将建立“UDP”和“TCP”两条网络层的链路,UDP链路用做实时数据流传输,TCP链路承载控制数据流传输。数据流传输模型如图3所示。

第十二节:通信之WLAN(Miracast)

                                   图 3

 

    WFD设备如何配对连接的呢?

 WFD连接过程,如下图4所示。WFD source 的IP地址“192.168.49.156”;WFD sink 的IP地址“192.168.49.1”。

第一步:建立TCP链路。在该链路上控制流进行传输。

第十二节:通信之WLAN(Miracast)

                                                                                          图 4

第二步:控制流信息解析,如图5所示。

第十二节:通信之WLAN(Miracast)

                      图 5

 

详细数据包内容解析:

(1)由WFD source 发起options,请求WFD设备信息

OPTIONS * RTSP/1.0

CSeq: 0

Require: org.wfa.wfd1.0

 

(2)WFD sink 响应,并说明支持的可响应处理的方法。

RTSP/1.0 200 OK

Date: Wed, 31 Dec 2008 16:29:29 +0000

User-Agent: stagefright/1.1 (Linux;Android 9.0)

CSeq: 0

Public: org.wfa.wfd1.0, GET_PARAMETER, SET_PARAMETER

 

注【协议内容】:

  • A WFD Device shall be able to send and respond to the OPTIONS, SET_PARAMETER, GET_PARAMETER, and org.wfa.wfd1.0 RTSP methods。

  • A WFD Sink shall be able to send the SETUP, PLAY, PAUSE and TEARDOWN RTSP methods。

  • A WFD Source shall be able to respond to the SETUP, PAUSE, PLAY, and TEARDOWN RTSP method。

(3)再由WFD sink 发起options,请求WFD设备信息。

OPTIONS * RTSP/1.0

Date: Wed, 31 Dec 2008 16:29:29 +0000

User-Agent: stagefright/1.1 (Linux;Android 9.0)

CSeq: 1

Require: org.wfa.wfd1.0

 

(4)WFD source 响应,并说明支持的可响应处理的方法。

RTSP/1.0 200 OK

CSeq: 1

Public: org.wfa.wfd1.0, GET_PARAMETER, SET_PARAMETER, SETUP, PLAY, PAUSE, TEARDOWN

 

(5)由WFD source发起GET_PARAMETER参数请求。

GET_PARAMETER rtsp://localhost/wfd1.0 RTSP/1.0

CSeq: 1

Content-Length: 211

Content-Type: text/parameters

wfd_audio_codecs

wfd_video_formats

wfd_content_protection

sony_ext_01

sony_ext_10

sony_ext_12

wfd_coupled_sink

wfd_client_rtp_ports

wfd_uibc_capability

wfd_standby_resume_capability

wd_initial_buffer

 

(6)WFD sink端响应支持的参数。

RTSP/1.0 200 OK

Date: Wed, 31 Dec 2008 16:29:29 +0000

User-Agent: stagefright/1.1 (Linux;Android 9.0)

CSeq: 1

Content-Type: text/parameters

Content-Length: 377

wfd_video_formats: 28 00 02 02 0001DEFF 157C7FFF 00000FFF 00 0000 0000 11 none none, 01 02 0001DEFF 157C7FFF 00000FFF 00 0000 0000 11 none none

wfd_audio_codecs: LPCM 00000003 00, AAC 00000001 00

wfd_content_protection: none

wfd_coupled_sink: none

wfd_client_rtp_ports: RTP/AVP/UDP;unicast 15550 0 mode=play

wfd_uibc_capability: none

wfd_standby_resume_capability: none

 

(7)WFD source设置支持的参数。

SET_PARAMETER rtsp://localhost/wfd1.0 RTSP/1.0

CSeq: 2

Session: 00000000

Content-Length: 247

Content-Type: text/parameters

wfd_audio_codecs: AAC 00000001 00

wfd_video_formats: 00 00 02 02 00000080 00000000 00000000 00 0000 0000 00 none none

wfd_presentation_URL: rtsp://192.168.49.2/wfd1.0/streamid=0 none

wfd_client_rtp_ports: RTP/AVP/UDP;unicast 15550 0 mode=play

 

(8)WFD sink端回复。

RTSP/1.0 200 OK

Date: Wed, 31 Dec 2008 16:29:29 +0000

User-Agent: stagefright/1.1 (Linux;Android 9.0)

CSeq: 2

 

(9)WFD source 请求设置参数。

SET_PARAMETER rtsp://localhost/wfd1.0 RTSP/1.0

CSeq: 3

Session: 00000000

Content-Length: 27

Content-Type: text/parameters

wfd_trigger_method: SETUP

 

(10)WFD sink 响应回复

RTSP/1.0 200 OK

Date: Tue, 31 Dec 2019 01:19:50 +0000

User-Agent: stagefright/1.1 (Linux;Android 4.1)

CSeq: 3

 

(11)WFD sink设置参数信息。

SETUP rtsp://192.168.49.156/wfd1.0/streamid=0 RTSP/1.0

Date: Tue, 31 Dec 2019 01:19:50 +0000

User-Agent: stagefright/1.1 (Linux;Android 4.1)

CSeq: 17

Transport: RTP/AVP/UDP;unicast;client_port=15550-15551

 

(12)WFD source响应回复。

RTSP/1.0 200 OK

CSeq: 17

Date: Tue, Dec 31 2019 01:19:50 GMT

Session: 00000019

Transport: RTP/AVP/UDP;unicast;client_port=15550-15551;server_port=19022-19023

 

(13)WFD sink 发起Play请求。

PLAY rtsp://192.168.49.156/wfd1.0/streamid=0 RTSP/1.0

Date: Tue, 31 Dec 2019 01:19:50 +0000

User-Agent: stagefright/1.1 (Linux;Android 4.1)

CSeq: 18

Session: 00000019

 

(14)WFD source 响应回复。

RTSP/1.0 200 OK

CSeq: 18

Date: Tue, Dec 31 2019 01:19:50 GMT

 

    从上RTSP交互数据包信息,我们可知WFD source 和WFD sink通过RTSP控制流协商设置video,audio及UDP端口参数等。所以Miracast 的连接,在网络层主要是基于RTSP控制协议的参数同步与设置。

    本节我们探讨了基于WLAN通信系统的Miracast功能,了解了Miracast的投屏原理和连接过程。对其RTSP交互数据包内容进行了详细check。第十二节探讨就到此,后续期待共同继续探讨学习。

注:

    对以上所述专业知识有修正意见或建议,可随时留言反馈。谢谢大家支持~

相关文章:

  • 2022-01-21
  • 2021-11-14
  • 2021-07-22
  • 2021-05-03
  • 2021-04-13
  • 2021-07-07
  • 2022-12-23
  • 2021-09-20
猜你喜欢
  • 2021-08-13
  • 2021-09-27
  • 2021-08-08
  • 2021-09-02
  • 2022-01-13
  • 2021-10-29
  • 2021-04-10
相关资源
相似解决方案