RTSP客户端的java实现
来源:互联网 发布:知乎专栏打不开 编辑:程序博客网 时间:2024/05/16 12:41
最近弄rtsp方面的东西,想找一个java实现的现成例子,翻遍网络,没有一个好用的,最后只好自己写一个。简单实现的思路是:首先建立一个tcp的连接,来建立rtsp的通道,然后依次按照rtsp协议发送options, describe, setup, play, pause, teardown命令,当然没有处理udp的数据部分,可以用darwin作代理来处理。代码如下:
NIO的socket事件接口:
比较简单的实现,最后程序的日志:
端口打开成功
OPTIONS rtsp://192.168.10.33:554 RTSP/1.0
Cseq: 1
返回内容:RTSP/1.0 200 OK
Server: DSS/5.5.4 (Build/489.13; Platform/Win32; Release/Darwin; )
Cseq: 1
Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, OPTIONS, ANNOUNCE, RECORD
option ok
DESCRIBE rtsp://192.168.10.33:554/live.sdp RTSP/1.0
Cseq: 2
返回内容:RTSP/1.0 200 OK
Server: DSS/5.5.4 (Build/489.13; Platform/Win32; Release/Darwin; )
Cseq: 2
Cache-Control: no-cache
Content-length: 376
Date: Tue, 22 Jan 2008 06:54:07 GMT
Expires: Tue, 22 Jan 2008 06:54:07 GMT
Content-Type: application/sdp
x-Accept-Retransmit: our-retransmit
x-Accept-Dynamic-Rate: 1
Content-Base: rtsp://192.168.10.33:554/live.sdp/
v=0
o=- 457979544 27 IN IP4 192.168.10.33
s=HelixSession
c=IN IP4 0.0.0.0
t=0 0
a=control:*
m=video 0 RTP/AVP 96
b=AS:20
a=rtpmap:96 MP4V-ES/90000
a=fmtp:96 profile-level-id=8; config=000001B008000001B50EA020202F000001000000012000C788BA9850584121463F
a=framesize:96 176-144
a=cliprect:0,0,144,176
a=mpeg4-esid:201
a=x-envivio-verid:00035A34
a=control:trackID=1
describe ok
SETUP rtsp://192.168.10.33:554/live.sdp/trackID=1
RTSP/1.0
Cseq: 3
Transport: RTP/AVP;UNICAST;client_port=16264-16265;mode=play
返回内容:RTSP/1.0 200 OK
Server: DSS/5.5.4 (Build/489.13; Platform/Win32; Release/Darwin; )
Cseq: 3
Cache-Control: no-cache
Session: 59725815223204
Date: Tue, 22 Jan 2008 06:54:09 GMT
Expires: Tue, 22 Jan 2008 06:54:09 GMT
Transport: RTP/AVP;UNICAST;mode=play;source=192.168.10.33;client_port=16264-16265;server_port=6970-6971
setup ok
PLAY rtsp://192.168.10.33:554/live.sdp RTSP/1.0
Session: 59725815223204
Cseq: 4
返回内容:RTSP/1.0 200 OK
Server: DSS/5.5.4 (Build/489.13; Platform/Win32; Release/Darwin; )
Cseq: 4
Session: 59725815223204
Range: npt=now-
RTP-Info: url=rtsp://192.168.10.33:554/live.sdp/trackID=1
play ok
PAUSE rtsp://192.168.10.33:554/live.sdp/ RTSP/1.0
Cseq: 5
Session: 59725815223204
返回内容:RTSP/1.0 200 OK
Server: DSS/5.5.4 (Build/489.13; Platform/Win32; Release/Darwin; )
Cseq: 5
Session: 59725815223204
pause ok
TEARDOWN rtsp://192.168.10.33:554/live.sdp/ RTSP/1.0
Cseq: 6
User-Agent: RealMedia Player HelixDNAClient/10.0.0.11279 (win32)
Session: 59725815223204
返回内容:RTSP/1.0 200 OK
Server: DSS/5.5.4 (Build/489.13; Platform/Win32; Release/Darwin; )
Cseq: 6
Session: 59725815223204
Connection: Close
teardown ok
端口关闭成功
用wireshark抓包的截屏:
- RTSP客户端的java实现
- RTSP客户端的java实现
- RTSP客户端的JAVA实现
- RTSP客户端实现
- rtsp网络协议的java实现
- Qt版的Rtsp客户端
- 客户端连接rtsp的步骤
- Qt版的Rtsp客户端
- Qt版的Rtsp客户端
- 【RTSP/RTP流媒体】10、编写简单的RTSP客户端
- rtsp客户端的实现和应用(流媒体性能测试方法)
- Android下的RTSP客户端搭建
- 基于live555的rtsp客户端模块
- 基于live555的rtsp 客户端模块优化
- Android下的RTSP客户端搭建
- 基于live555封装的rtsp客户端rtspperf
- rtsp客户端做的事情(testRTSPClient)
- rtsp客户端做的事情(testRTSPClient)
- 第六章实验任务(6)
- 浏览完毕
- Linux下patch的制作和应用(转)
- apt-get --fix-missing
- 去过的城市
- RTSP客户端的java实现
- 端口扫描分析——端口扫描途径
- Makefile之wildcard,notdir,patsubst
- 设计模式时的相关原则
- cacti中监控内存的模板
- 103条XP运行命令
- 解决Ubuntu中Flash乱码
- SMARTFORMS 打印多少条数据 计数器
- 一个DataTable的行列转换代码