流媒体,H.264,RTP,FU-A,解码播放
开发某实时视频浏览程序,使用RTSP握手后,设备向PC指定UDP端口回传FU-A封包的H.264视频数据,不知道如何进行解码。
交互过程如下(P:PC, D:设备):
P -> D:
DESCRIBE rtsp://192.168.0.13:554/h264.sdp?res=full&x0=0&y0=0&x1=352&y1=288 RTSP/1.0
Accept: application/sdp
Authorization: Basic YWRtaW46ODg4ODg4ODg=
User-Agent: H264TestClient
CSeq: 1
D -> P:
RTSP/1.0 200 OK
CSeq: 1
Cache-Control: no-cache
Content-Length: 234
Content-Type: application/sdp
x-Accept-Retransmit: our-retransmit
x-Accept-Dynamic-Rate: 1
v=0
o=channel0 37541 33321 IN IP4 192.168.0.13
s=h264.sdp
t=0 0
m=video 0 RTP/AVP 96
a=rtpmap:96 H264/90000
a=control:trackID=1
a=fmtp:96 packetization-mode=1;profile-level-id=428032;sprop-parameter-sets=Z0KAMukCgSyA,aM48gA==
P -> D:
SETUP rtsp://192.168.0.13:554/h264.sdp?res=full&x0=0&y0=0&x1=352&y1=288 RTSP/1.0
Transport: RTP/AVP/TCP;unicast;client_port=10000-10001;ssrc=0
User-Agent: H264TestClient
CSeq: 2
D -> P:
RTSP/1.0 200 OK
CSeq: 2
Cache-Control: no-cache
Session: 135514808124572
Transport: RTP/AVP;unicast;client_port=10000-10001;server_port=6970-6971
P -> D:
PLAY rtsp://192.168.0.13:554/h264.sdp?res=full&x0=0&y0=0&x1=352&y1=288 RTSP/1.0
Session: 135514808124572
Range: npt=0.000000-0.000000
User-Agent: H264TestClient
CSeq: 3
D -> P:
RTSP/1.0 200 OK
CSeq: 3
Session: 135514808124572
Range: npt=now-
至此rtsp握手成功,设备开始用UDP回传数据,每一个UDP包都是一个FU-A包(首12字节是RTP包头),如:
packet 1, length = 1472:
80 60 00 01 7A FD 74 05
4B 0B B9 BE 7C 85 88 80
15 40 34 23 14 00 04 52
F5 26 E4 E4 E4 E4 E4 E4
........
packet 2, length = 1472:
80 60 00 02 7A FD 74 05
4B 0B B9 BE 7C 05 B2 A8
3F 0B 0A 2F F4 FE DE 17
C0 04 8A 1A 15 46 80 95
....
....
packet 5, length = 500:
80 E0 00 05 7A FD 74 05
4B 0B B9 BE 7C 45 F5 AF
F4 47 EA C1 4E 80 8C 3B
3C EE 93 08 94 81 EE 09
....
用VLC是可以直接连接并播放的。
目前问题是提取FU-A的payload后不知道应当如何进行播放,盼高手赐教。