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视频流流程分析相关推荐

  1. LIVE555再学习 -- live555实现RTSP直播服务器 分析

    上一篇文章 讲到了 live555实现RTSP直播服务器,但是篇幅有点长,没有来得及对源码进行分析. 这篇文章就好好看看,源码部分这次参看Linux版本下的 通过live555实现H264 RTSP直 ...

  2. Android流媒体处理流程分析

    文章目录 1. WiFiDisplay简介 2.RTSP协议流程分析 3. 流媒体协议简介 4. RTP.RTCP协议简介 4.1 RTP协议 4.1 RTP载荷H264码流 4.2 RTP载荷PS码 ...

  3. LIVE555再学习 -- FFmpeg + live555实现RTSP直播

    一.简单实验 首先先简单的实验了一下. 运行 FFmpeg 将 MP4文件转成 264 文件 ffmpeg -i Tai.mp4 test.264 执行 testOnDemandRTSPServer ...

  4. live555从RTSP服务器读取数据到使用接收到的数据流程分析

    本文在linux环境下编译live555工程,并用cgdb调试工具对live555工程中的testProgs目录下的openRTSP的执行过程进行了跟踪分析,直到将从socket端读取视频数据并保存为 ...

  5. LIVE555中RTSP客户端接收媒体流分析及测试代码

    LIVE555中testProgs目录下的testRTSPClient.cpp代码用于测试接收RTSP URL指定的媒体流,向服务器端发送的命令包括:DESCRIBE.SETUP.PLAY.TERAD ...

  6. vlc-android对于通过Live555接收到音视频数据包后的处理分析

    转载地址:https://blog.csdn.net/c_m_deng/article/details/8487456 通过ndk-gdb跟踪调试vlc-android来分析从连接到RTSP服务器并接 ...

  7. LiveNVR直播Onvif/RTSP视频流媒体平台遇到离线显示Server returned 5XX Server Error reply如何处理问题分析RTSP借一还多

    LiveNVR 离线Server returned 5XX Server Error reply如何处理问题分析 1.视频广场显示离线 2.尝试VLC是否可以播放 2.1.不能播放 2.2.可以播放 ...

  8. 【飞桨Paddle】RTSP视频流和PP-Human实时行人分析

    PP-Human是基于飞桨深度学习框架的业界首个开源的实时行人分析工具,支持图片/单镜头视频/多镜头视频多种输入方式,功能覆盖多目标跟踪.属性识别和行为分析,兼容图片.视频.在线视频流多种数据格式输入 ...

  9. LiveNVR视频流媒体平台支持接收rtsp推流并转换成GB28181输出级联到第三方国标平台服务

    接收rtsp推流并转换成GB28181输出级联到第三方国标平台服务 1.需求背景 2.开启RTSP 2.1.基础配置配置RTSP端口 2.3.RTSP推流地址配置规则 2.2.配置设备推流 3.配置拉 ...

最新文章

  1. taro 在components文件夹中 新建组件时,组件支持自定义命名,但是不能大写开头...
  2. 使用Capture画原理图
  3. 安卓桌面精灵_小米MIUI安卓Q来啦,超多黑科技!凭啥红米先尝鲜?内附预览图...
  4. oracle表空间最大30G?如果一张表超过30G怎么办
  5. 实时平台在趣头条的建设实践
  6. ABAP的语法高亮是如何在浏览器里显示的
  7. React学习笔记(持续更新)
  8. 分布式系统关注点(8)——99%的人都能看懂的「熔断」以及最佳实践
  9. 局域网内手机访问电脑网站注意几点
  10. vs2010设置 行号显示
  11. .bat批处理命令常用操作
  12. easyrecovery15新版绿色序列号数据恢复软件
  13. hdu 5745 La Vie en rose 2016多校第二场1012
  14. DevOps 全栈开发基础
  15. 服务器系统如用pe和做镜像,用IMAGEX捕获系统镜像,并通过PE从网络分发的方法...
  16. 以太网交换机可以家用吗_家用交换机是干什么用的?
  17. php下载到指定目录,下面这段代码如何下载到指定目录
  18. Git:真实 merge
  19. VMware虚拟机使用总结
  20. 手机App开发的基础概念

热门文章

  1. 【转】关于DCMTK中像素存储以及getoutdata()函数的使用
  2. 【转】05.Dicom 学习笔记-DICOM C-Echo 消息服务
  3. 【转】学习Entity Framework 中的Code First
  4. SharePoint无代码工作流设计开发实例——交通费报销流程(一)
  5. sleep期间读取所有_ceph部分数据所有副本先后故障的抢救
  6. OpenGL模板测试通俗理解
  7. 记录一次HBase的scan的分页查询
  8. CCIE-LAB-第十一篇-DMVPN+IPSEC+BGP
  9. Apollo自动驾驶入门课程第①讲—无人驾驶概览
  10. nltk安装punkt等语料库时报SSL错误完美解决方案及离线安装方法