2 u014760475 u014760475 于 2016.04.14 15:29 提问

利用live555完成RTSP客户端编写,不明白session与subsession区别

各位大神,我在看别人写的liv555客户端代码的时候,遇到点问题不是太明白,想请教一下:
1.在客户端向服务器发送完DESCRIBE之后,接受到服务器返回的SDP信息之后,不是应该利用这个SDP信息完成SESSION会话的建立嘛?
我的理解是之后只要发送”SETUP,PALY“就可以开始通过UDP接收流数据啦,但是我发现客户端源码内多了一个步骤:图片说明
从上面的截图可以看到,首先是通过返回的SDP信息,sdpDescription来完成MediaSession的创建,返回值为scs.session,函数声明如下:图片说明
我觉得此时这个会话不是创建好了吗,然后就应该发送SETUP PLAY开始接受数据啦,但是实际上还要创建MediaSubsession,并且注释这么说得:
“然后,为这个会话创建source object(??源对象??),我们通过遍历这个会话的每一个subsession来完成,然后在每个subsession来完成”SETUP“的发送,
我不懂这里subsession什么意思啊,是不是这个会话中的每一个图像帧就是一个subsession?
小弟才学习这个,各位见笑了,
我在网上没查到这方面的解释,只看到一句话”ServerMediaSession原先说代表一个流,其实是不准确的。它代表的是server端的一个媒体的名字,而说ServerMediaSubsession代表一个Track是准确的。以后流指的是那些有数据流动的组合。 “

2个回答

qq_34647378
qq_34647378   2016.04.14 17:22
已采纳
u014760475
u014760475 你好,我看到”3)subsession 对于每一种媒体格式,都需要实现一个subsession,并重新实现虚函数createNewStreamSource以创建自己的source。 h264,处理h264的subsession从H264VideoFileServerMediaSubsession继承,将从packet中可以获取h264的es流,直接交给H264VideoStreamFramer处理即可。“ 是不是说senssion只是根据需要传送的媒体格式来确定的,而subsenssion才是每一帧的数据??
一年多之前 回复
u014760475
u014760475 您好,我看到3)subsession 对于每一种媒体格式,都需要实现一个subsession,并重新实现虚函数createNewStreamSource以创建自己的source。 h264,处理h264的subsession从H264VideoFileServerMediaSubsession继承,将从packet中可以获取h264的es流,直接交给H264VideoStreamFramer处理即可。
一年多之前 回复
u014760475
u014760475   2016.04.14 20:27

还是说,一个session其实可以包含 。264,.acc等,然后用subsession来分别提取?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!