live555 接收rtsp视频流流程分析
live555 接收rtsp视频流流程分析
RTSP交互流程
C表示RTSP客户端,S表示RTSP服务端
① C->S: OPTIONrequest //询问S有哪些方法可用
S->C: OPTION response //S回应信息中包括提供的所有可用方法
② C->S: DESCRIBErequest //要求得到S提供的媒体初始化描述信息
S->C: DESCRIBE response //S回应媒体初始化描述信息,主要是sdp
③ C->S: SETUPrequest //设置会话属性,以及传输模式,提醒S建立会话
S->C: SETUP response //S建立会话,返回会话标识符及会话相关信息
④ C->S: PLAYrequest //C请求播放
S->C: PLAY response //S回应请求信息
S->C: 发送流媒体数据
⑤ C->S: TEARDOWNrequest //C请求关闭会话
S->C: TEARDOWN response //S回应请求
上述的过程是标准的RTSP流程,其中第3步和第4步是必需的。
OpenCore在执行完PLAYER_SET_DATASOURCE,prepare之后,执行PLAYER_INIT时,如果发现datasource是rtsp流,则进入rtsp模块。
OpenCore的RTSP模块实现在Pvrtsp_client_engine_node.cpp中,PVRTSPEngineNode::SendRtspDescribe()描述了连接建立过程中的状态变化过程。
需要注意的时,opencore在发出OPTION request后,并不会等着收response,而是直接发DESCRIBE request,然后才开始收OPTION response和DESCRIBE response。
Live555在RTSPServer.cpp中用RTSPServer::RTSPClientSession::incomingRequestHandler()来处理来自client端的request。
RTSP源码接收端使用样例:
//RtstClientTest.cpp
#include"stdafx.h"
#include"RtspRequest.h"
#include"Rtp.h"
RtspRequest g_RtspRequest;
int_tmain(int argc, _TCHAR* argv[])
{
//接收
string url ="rtsp://192.168.1.1:554/aacAudioTest";
string setupName ="aacAudioTest";
INT rtpPort =8080;
INT rtcpPort =rtpPort + 2;
stringsdp;
INT64sess;
g_RtspRequest.Open(url.c_str(), "127.0.0.0", 0);
g_RtspRequest.RequestOptions();
g_RtspRequest.RequestDescribe(&sdp);
g_RtspRequest.RequestSetup(setupName.c_str(), transportModeRtpUdp,rtpPort , rtcpPort , &sess);
g_RtspRequest.RequestPlay();
Rtp* pRtp = newRtp();
pRtp->Open("127.0.0.0", rtpPort);
PBYTE pBuffer =new BYTE[1024*1024*10];
intiRead;
INTpayloadType;
WORDsequenceNumber;
INT32timeStamp;
INT32ssrc;
while(TRUE)
{
iRead = pRtp->Read(pBuffer, 1024*1024*10,&payloadType, &sequenceNumber,&timeStamp, &ssrc);
if (iRead > 0)
{
// save buff
}
}
deletepRtp;
g_RtspRequest.RequestPause();
g_RtspRequest.RequestTeardown();
g_RtspRequest.Close();
delete[]pBuffer;
return0;
}
live555 接收rtsp视频流流程分析相关推荐
- LIVE555再学习 -- live555实现RTSP直播服务器 分析
上一篇文章 讲到了 live555实现RTSP直播服务器,但是篇幅有点长,没有来得及对源码进行分析. 这篇文章就好好看看,源码部分这次参看Linux版本下的 通过live555实现H264 RTSP直 ...
- Android流媒体处理流程分析
文章目录 1. WiFiDisplay简介 2.RTSP协议流程分析 3. 流媒体协议简介 4. RTP.RTCP协议简介 4.1 RTP协议 4.1 RTP载荷H264码流 4.2 RTP载荷PS码 ...
- LIVE555再学习 -- FFmpeg + live555实现RTSP直播
一.简单实验 首先先简单的实验了一下. 运行 FFmpeg 将 MP4文件转成 264 文件 ffmpeg -i Tai.mp4 test.264 执行 testOnDemandRTSPServer ...
- live555从RTSP服务器读取数据到使用接收到的数据流程分析
本文在linux环境下编译live555工程,并用cgdb调试工具对live555工程中的testProgs目录下的openRTSP的执行过程进行了跟踪分析,直到将从socket端读取视频数据并保存为 ...
- LIVE555中RTSP客户端接收媒体流分析及测试代码
LIVE555中testProgs目录下的testRTSPClient.cpp代码用于测试接收RTSP URL指定的媒体流,向服务器端发送的命令包括:DESCRIBE.SETUP.PLAY.TERAD ...
- vlc-android对于通过Live555接收到音视频数据包后的处理分析
转载地址:https://blog.csdn.net/c_m_deng/article/details/8487456 通过ndk-gdb跟踪调试vlc-android来分析从连接到RTSP服务器并接 ...
- LiveNVR直播Onvif/RTSP视频流媒体平台遇到离线显示Server returned 5XX Server Error reply如何处理问题分析RTSP借一还多
LiveNVR 离线Server returned 5XX Server Error reply如何处理问题分析 1.视频广场显示离线 2.尝试VLC是否可以播放 2.1.不能播放 2.2.可以播放 ...
- 【飞桨Paddle】RTSP视频流和PP-Human实时行人分析
PP-Human是基于飞桨深度学习框架的业界首个开源的实时行人分析工具,支持图片/单镜头视频/多镜头视频多种输入方式,功能覆盖多目标跟踪.属性识别和行为分析,兼容图片.视频.在线视频流多种数据格式输入 ...
- LiveNVR视频流媒体平台支持接收rtsp推流并转换成GB28181输出级联到第三方国标平台服务
接收rtsp推流并转换成GB28181输出级联到第三方国标平台服务 1.需求背景 2.开启RTSP 2.1.基础配置配置RTSP端口 2.3.RTSP推流地址配置规则 2.2.配置设备推流 3.配置拉 ...
最新文章
- taro 在components文件夹中 新建组件时,组件支持自定义命名,但是不能大写开头...
- 使用Capture画原理图
- 安卓桌面精灵_小米MIUI安卓Q来啦,超多黑科技!凭啥红米先尝鲜?内附预览图...
- oracle表空间最大30G?如果一张表超过30G怎么办
- 实时平台在趣头条的建设实践
- ABAP的语法高亮是如何在浏览器里显示的
- React学习笔记(持续更新)
- 分布式系统关注点(8)——99%的人都能看懂的「熔断」以及最佳实践
- 局域网内手机访问电脑网站注意几点
- vs2010设置 行号显示
- .bat批处理命令常用操作
- easyrecovery15新版绿色序列号数据恢复软件
- hdu 5745 La Vie en rose 2016多校第二场1012
- DevOps 全栈开发基础
- 服务器系统如用pe和做镜像,用IMAGEX捕获系统镜像,并通过PE从网络分发的方法...
- 以太网交换机可以家用吗_家用交换机是干什么用的?
- php下载到指定目录,下面这段代码如何下载到指定目录
- Git:真实 merge
- VMware虚拟机使用总结
- 手机App开发的基础概念
热门文章
- 【转】关于DCMTK中像素存储以及getoutdata()函数的使用
- 【转】05.Dicom 学习笔记-DICOM C-Echo 消息服务
- 【转】学习Entity Framework 中的Code First
- SharePoint无代码工作流设计开发实例——交通费报销流程(一)
- sleep期间读取所有_ceph部分数据所有副本先后故障的抢救
- OpenGL模板测试通俗理解
- 记录一次HBase的scan的分页查询
- CCIE-LAB-第十一篇-DMVPN+IPSEC+BGP
- Apollo自动驾驶入门课程第①讲—无人驾驶概览
- nltk安装punkt等语料库时报SSL错误完美解决方案及离线安装方法