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

问题描述

利用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是准确的。以后流指的是那些有数据流动的组合。 “

解决方案

http://blog.csdn.net/gavinr/article/details/7186843 拿去

解决方案二:

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

时间: 2024-11-03 05:29:23

rtsp-利用live555完成RTSP客户端编写,不明白session与subsession区别的相关文章

视频-DDS在Ubuntu下搭建的RTSP服务器,VLC做客户端,Android VideoView

问题描述 DDS在Ubuntu下搭建的RTSP服务器,VLC做客户端,Android VideoView DDS在Ubuntu下搭建的RTSP服务器,VLC做客户端为什么只能播放mp4和3gp格式,不能播放mp3和mov格式呢?这些都是DDS目录下自带的啊,为什么用VLC客户端不能播放呢?好郁闷,更奇怪的是,我用Android的VideoView访问rtsp://我的ip//流媒体文件 点击播放后,停一段时间提示无法打开该视频,但是网络上的RTSP网址的视频就可以打开,到底怎么回事,新手上道,好

live555 rtsp vlc-请问如何用live555搭建RTSP服务器,并使用VLC播放

问题描述 请问如何用live555搭建RTSP服务器,并使用VLC播放 如题,我的系统是win7 64位,怎么用live555搭建RTSP服务器,视频源是本地视频文件 ,请问如何实现.请各位大神指点 解决方案 http://blog.sina.com.cn/s/blog_80be40500101euo7.html 解决方案二: http://download.csdn.net/detail/yong_hen/8165971 解决方案三: 使用VLC和live555MediaServer搭建RTS

如何利用live555开源库从摄像机抓取视频数据并保存文件?

live555简介 live555是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议(如RTP/RTCP.RTSP.SIP等)的支持.同时,live555实现了对多种音视频编码格式(包括MPEG.H.263+.DV.JPEG等)的流化.接收和处理等的支持.目前,live555已经被用于多款播放器的流媒体播放功能的实现,如VLC.MPlayer.MediaPortal.ivrworx等. live555库文件的编译生成 live555开源项目网址是:http://ww

windows-如何利用C/C++标准库编写跨平台的程序?

问题描述 如何利用C/C++标准库编写跨平台的程序? 如题,最近公司给了个小任务,让在一个工程中找出符合某种条件的代码,并记录下行号. 听着好像比较简单,因为公司的项目在win,linux下有两个版本,所以小白同学比较装逼的想做一个跨平台的版本,然后,炸了. 思路好像还比较好找,因为是C++的项目,所以只要遍历某文件夹下的所有子文件以及子文件夹,找到.c或者.cpp文件,然后在其中寻找符合条件的语句连同行号写入文件中,可是,C/C++的标准库没有办法直接操作目录么? 找到各种解决方案都说目录是要

《Visual C++ 开发从入门到精通》——1.3 利用Visual C++ 6.0编写C++程序

1.3 利用Visual C++ 6.0编写C++程序 知识点讲解:光盘视频PPT讲解(知识点)第1章利用Visual C++ 6.0编写C++程序.mp4 实例003 编写.调试和运行一个标准的C++程序源码路径 光盘daimapart 01 视频路径 光盘视频实例第1章003 本实例的功能是,使用Visual C++6.0编写.调试并运行一个标准的C++程序.本实例的具体实现流程如下. (1)选择File→New命令,在New对话框中选择Win32 Console Application项,

Redis的Java客户端编写

在Redis官网上可以找到好多语言的客户端编写,我们选择其中我们熟悉的Java语言,会带你来到如下的redis中java实现的git仓库,可以选择download它的zip或者关联git. 我选择的是看他的readme,然后用pom实现. redis中java实现的jedis的git仓库 在eclipse中搭建maven工程 我们搭建好maven工程,然后导入这一段就很清楚的看到自动导入了两个jar包 <dependency> <groupId>redis.clients</

库-VB.NEt利用水晶报表的API,给Oracle创建session后不能释放session的问题

问题描述 VB.NEt利用水晶报表的API,给Oracle创建session后不能释放session的问题 vb.net2010调用水晶报表的API,先使用PEOpenEngine,然后PEOpenPrintJob,然后使用PESetNthTableLocation后,会自动给Oracle创建一个 session来连接数据库,调用数据库中的数据以打印报表,接着用PEStartPrintJob打印报表,然后用PEClosePrintJob来关闭报表, 然后PECloseEngine关闭水晶报表引擎

开源流媒体处理库live555服务器端、客户端源代码分析总结

RTSP服务器端流程: 1. RTSP连接的建立过程       RTSPServer类用于构建一个RTSP服务器,该类同时在其内部定义了一个RTSPClientSession类,用于处理单独的客户会话.       首先创建RTSP服务器(具体实现类是DynamicRTSPServer),在创建过程中,先建立Socket(ourSocket)在TCP的554 端口进行监听,然后把连接处理函数句柄(RTSPServer::incomingConnectionHandler)和socket句柄传给

推送通知iOS客户端编写实现及推送服务器端编写

1.iOS客户端编程 推送通知技术在Mac OS X和iOS系统上都可以运行,我们本章主要介绍iOS客户端编程,推送通知的编程比较简单,编程的关键是获得令牌,这是从APNS返回的,然后还有把提交给内容提供商.下面我们看看开发之前的一些准备工作.   配置Xcode工程 编写iOS推送应用需要在Xcode工程中进行一些配置,这些配置是主要是设置代码签名标识,代码签名标识的前提要有配置概要文件(Provisioning Profiles). 有了配置概要文件即可以设置代码签名标识了,需要下载概要文件