经过这几天的调试 一个功能简单的 RTSP服务端已经实现了
支持TCP/UDP 支持H264 H265 支持同时传输 AAC音频
记录下 交互时需要注意的地方
先说不需要用户名密码认证的情况
1.OPTIONS 都一样 如下:左箭头内是客户端发给服务端 箭头内是服务端回给客户端
2.DESCRIBE
目前的流是包含视频和AAC音频
也可以只有音频 或者只有视频 没有音频就不需要黄色框内的内容
没有视频就不需要蓝色框内的内容
3.SETUP 方法 视频和音频是区分开的 先所以如果包含视频 音频 会收到两次setup消息
SETUP是最复杂的
第一次视频TCP方式
第二次音频 TCP方式
UDP方式是这样的
第一次视频 UDP
第二次音频UDP
4.PLAY方法 都一样
5.TEARDOWN方法 都一样 掺杂了几个其他log起忽略
RTCP 不是必须的
下面说下需要认证的情况
目前多数都是Digest认证
需要认证的时候 客户端会先发一个普通的OPTIONS 方法
服务端会回给客户端一个401消息 如下:
然后如果是VLC 就会弹出框让你输入用户名密码 如果是ffplay直接提示 未认证如下图
输入用户名密码之后 播放端每次请求内容都会带上这个 用户名密码的信息
具体报文如下
服务端收到每一次请求都必须先验证有没有这个认证信息的字段 只有在认证通过之后 才会走到下一个方法
如下
OPTIONS
DESCRIBE
SETUP 视频和音频 会有两次
PLAY
TEARDOWN