天天看點

Miui+多屏協作--wifiDisplay-wireshark抓個包

宣傳了好久的mui12.5,終于在我的手機上推送了(RedmiK20Pro),體驗一下這個多屏協作功能。

這裡用的桌上型電腦外接usb無線網卡的方式體驗了一波。

Miui+多屏協作--wifiDisplay-wireshark抓個包

。。。哎,關于其流暢度。。。也就是能跑起來的樣子,背景放個音樂,滑鼠滑動一下桌面音樂背景播放的網易雲立刻就頓一頓,電腦端的畫面也總是慢半拍,當然,這和我的硬體性能有一定關系,是以下面寫了這篇水文,順便給它wireshark抓了個包,瞅瞅看能不能窺探點技術。

裝置硬體情況:

小米的這個wind上的用戶端可以直接在不同的裝置上安裝使用,對電腦沒啥限制,是windows系統,有wifi,就可以用了。(是以,硬體性能也是沒有過濾限制的,體驗效果也就參差不齊了,官方說明:推薦使用小米筆記本 Pro 15、小米筆記本 Pro 14、RedmiBook Pro 15、RedmiBook Pro 14、Redmi G 遊戲本、RedmiBook 16、RedmiBook 14 Ⅱ、RedmiBook Air 13。 由于驅動及硬體限制,您在其他筆記本上的體驗将無法得到保障。)

Miui+多屏協作--wifiDisplay-wireshark抓個包

我的硬體情況:

手機:

Miui+多屏協作--wifiDisplay-wireshark抓個包

電腦:我這裡用的桌上型電腦 (自組裝的跑分30w+的遊戲主機,3.6G 6核12線程+16G記憶體,當然,這裡多屏協作流暢度相關的和顯示卡啥的都沒有關系,主要是看wifi無線網卡的性能了,然而主機沒有wifi,是以連夜買了個簡單的無線WiFi,看起來很簡單的普通的一個無線WiFi接收器,騰達-realtek晶片)

Miui+多屏協作--wifiDisplay-wireshark抓個包
Miui+多屏協作--wifiDisplay-wireshark抓個包

然後下載下傳Mui+ wind程式:https://plus.miui.com/

掏出手機打開系統自帶相機掃描二維碼,就可以連接配接上去了。

wireshark抓個包

(企圖窺探一下技術實作,奈何)

下載下傳個最新的wireshark:https://www.wireshark.org/download.html

抓包:哦,整個就是一個 rtsp-rtp-tcp-mpegts流

Miui+多屏協作--wifiDisplay-wireshark抓個包

全程基于單個的tcp傳輸,rtsp協商,rtp負載mpegts流來實作音視訊傳輸,(基本将android手機投屏的一套照搬了過來,也就是Miracast Android WifiDisplay 記一下這是Mui12.5.4+ Mui2.3.0.951 wind用戶端,不知道後面會不會做一下私有的優化)

Miui+多屏協作--wifiDisplay-wireshark抓個包

詳細看一下這個rtsp資訊:(标準的rtps wifidisplay)

Miui+多屏協作--wifiDisplay-wireshark抓個包

直接貼上資料吧

OPTIONS * RTSP/1.0
Date: Sat, 12 Jun 2021 02:52:56 +0000
Server: 
CSeq: 1
Require: org.wfa.wfd1.0

RTSP/1.0 200 OK
Date: Sat, 12 Jun 2021 02:52:36 +0800
User-Agent: stagefright/1.1 (Linux;Android 4.1)
CSeq: 1
Public: org.wfa.wfd1.0, GET_PARAMETER, SET_PARAMETER

OPTIONS * RTSP/1.0
Date: Sat, 12 Jun 2021 02:52:36 +0800
User-Agent: stagefright/1.1 (Linux;Android 4.1)
CSeq: 1
Require: org.wfa.wfd1.0

RTSP/1.0 200 OK
Date: Sat, 12 Jun 2021 02:52:56 +0000
Server: 
CSeq: 1
Public: org.wfa.wfd1.0, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER

GET_PARAMETER rtsp://localhost/wfd1.0 RTSP/1.0
Date: Sat, 12 Jun 2021 02:52:56 +0000
Server: 
CSeq: 2
Content-Type: text/parameters
Content-Length: 99

wfd_content_protection
wfd_video_formats
wfd_audio_codecs
wfd_client_rtp_ports
wfd_tcp_enable
RTSP/1.0 200 OK
Date: Sat, 12 Jun 2021 02:52:36 +0800
User-Agent: stagefright/1.1 (Linux;Android 4.1)
CSeq: 2
Content-Type: text/parameters
Content-Length: 207

wfd_audio_codecs: AAC 00000001 00
wfd_video_formats: 00 00 02 0F 000FFFFF 05157FFF 00000FFF 00 0001 0000 11 none none
wfd_client_rtp_ports: RTP/AVP/TCP;interleaved mode=play
wfd_content_protection: none
SET_PARAMETER rtsp://localhost/wfd1.0 RTSP/1.0
Date: Sat, 12 Jun 2021 02:52:56 +0000
Server: 
CSeq: 3
Content-Type: text/parameters
Content-Length: 246

wfd_video_formats: 98 00 02 02 00080000 00000000 00000000 00 0000 0000 00 none none
wfd_audio_codecs: AAC 00000001 00
wfd_presentation_URL: rtsp://192.168.137.108/wfd1.0/streamid=0 none
wfd_client_rtp_ports: RTP/AVP/TCP;interleaved mode=play
RTSP/1.0 200 OK
Date: Sat, 12 Jun 2021 02:52:36 +0800
User-Agent: stagefright/1.1 (Linux;Android 4.1)
CSeq: 3
Content-Type: text/parameters
Content-Length: 0

SET_PARAMETER rtsp://localhost/wfd1.0 RTSP/1.0
Date: Sat, 12 Jun 2021 02:52:56 +0000
Server: 
CSeq: 4
Content-Type: text/parameters
Content-Length: 27

wfd_trigger_method: SETUP
RTSP/1.0 200 OK
Date: Sat, 12 Jun 2021 02:52:36 +0800
User-Agent: stagefright/1.1 (Linux;Android 4.1)
CSeq: 4
Content-Type: text/parameters
Content-Length: 0

SETUP rtsp://192.168.137.108/wfd1.0/streamid=0 RTSP/1.0
Date: Sat, 12 Jun 2021 02:52:36 +0800
User-Agent: stagefright/1.1 (Linux;Android 4.1)
CSeq: 2
Transport: RTP/AVP/TCP;interleaved=0-1

RTSP/1.0 200 OK
Date: Sat, 12 Jun 2021 02:52:56 +0000
Server: 
CSeq: 2
Session: 1638754794;timeout=30
Transport: RTP/AVP/TCP;interleaved=0-1;

PLAY rtsp://192.168.137.108/wfd1.0/streamid=0 RTSP/1.0
Date: Sat, 12 Jun 2021 02:52:36 +0800
User-Agent: stagefright/1.1 (Linux;Android 4.1)
CSeq: 3
Session: 1638754794

RTSP/1.0 200 OK
Date: Sat, 12 Jun 2021 02:52:56 +0000
Server: 
CSeq: 3
Session: 1638754794;timeout=30
Range: npt=now-
           

幹脆把抓的包裡面的mpeg-ts提取出來看看:

wireshark過來rtp,電話->Rtp->流分析->save->不同步的正向音頻->raw格式

Miui+多屏協作--wifiDisplay-wireshark抓個包

儲存提取的資料,直接是mpeg-ts的流,用視訊播放器比如 potplayer 直接可以播放,包含視訊和音頻。:

也可以用streamEye軟體直接檢視其中的編碼資訊:

h264編碼,High:5.1

分辨率1080x2340

實際播放的幀率60

gop 1s

Miui+多屏協作--wifiDisplay-wireshark抓個包