投屏协议

以实时性来说,需要用到rtsp协议,实时性较高,各方面是比较符合抓取后投送到大屏上的,无论大屏用的dlna还是miracast,rtsp协议是少不了的,那么,做一个rtspserver 就是一个必需品了。

投屏测试服务器

首先是投屏协议可以使用kodi来作为render来测试,为了简便,实际上可以使用node, python 来做dmc控制器,要做一个控制器是要用upnp协议的,并不难,难的是要把出错控制等都做好,在kodi中把服务撑起来,一个一个解决,第一个就是要解决rtspserver的问题,做一个rtspserver,做一个rtspclient,把协议全部搞好。

测试kodi

那么如何测试upnp协议dlna协议已经通了,最简单的就是搭建http协议,使用go 或者 nodejs来搭建一个http文件服务器,里面放上mp4文件,直接让dmc 控制器去让dmr 读取http协议的mp4文件,实际上,go server 或者nodejs server相当于dms。

//最后

at last 测试rtsp协议

测试rtsp协议,既然rtspserver如期做好,那么测试就是一个问题了,rtspclient 也是一个必需品。rtspclient可以用live555,ffmpeg等库直接做就好,有一个问题是,是否需要引入这些库,自己做,困难吗?答案是并不困难,但是作为一个http协议类似的rtsp,字符串解析体现了一定的功力。以下用live555启动一个server。

//客户端

'OPTIONS rtsp://127.0.0.1/2.264 RTSP/1.0’done.
'CSeq: 1’done.
''done.

//服务端
<< ‘RTSP/1.0 200 OK’
<< ‘CSeq: 1’
<< ‘Date: Wed, Apr 07 2021 13:16:55 GMT’
<< ‘Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER’
<< ‘’

'DESCRIBE rtsp://127.0.0.1/2.264 RTSP/1.0’done.
'CSeq: 2’done.
''done.

<< ‘RTSP/1.0 200 OK’
<< ‘CSeq: 2’
<< ‘Date: Wed, Apr 07 2021 13:16:55 GMT’
<< ‘Content-Base: rtsp://127.0.0.1/2.264/’
<< ‘Content-Type: application/sdp’
<< ‘Content-Length: 515’
<< ‘’
/sdp 信息打印
v=0
o=- 1617801415399573 1 IN IP4 192.168.1.144
s=H.264 Video, streamed by the LIVE555 Media Server
i=2.264
t=0 0
a=tool:LIVE555 Streaming Media v2017.07.18
a=type:broadcast
a=control:*
a=range:npt=0-
a=x-qt-text-nam:H.264 Video, streamed by the LIVE555 Media Server
a=x-qt-text-inf:2.264
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:500
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=64001E;sprop-parameter-sets=Z2QAHqzZQKAv+WbIAAADAAgAAAMBkHixbLA=,aOvjyyLA
a=control:track1

'SETUP rtsp://127.0.0.1/2.264 RTSP/1.0’done.
'CSeq: 3’done.
'Transport: RTP/AVP;unicast;client_port=8080-8082’done.
''done.

<< ‘RTSP/1.0 200 OK’
<< ‘CSeq: 3’
<< ‘Date: Wed, Apr 07 2021 13:16:55 GMT’
<< ‘Transport: RTP/AVP;unicast;destination=127.0.0.1;source=127.0.0.1;client_port=8080-8082;server_port=6972-6973’
<< ‘Session: 4D2FA555;timeout=65’
<< ‘’

'PLAY rtsp://127.0.0.1/2.264 RTSP/1.0’done.
'CSeq: 4’done.
'Session: 4D2FA555’done.
''done.

<< ‘RTSP/1.0 200 OK’
<< ‘CSeq: 4’
<< ‘Date: Wed, Apr 07 2021 13:16:55 GMT’
<< ‘Range: npt=0.000-’
<< ‘Session: 4D2FA555’
<< ‘RTP-Info: url=rtsp://127.0.0.1/2.264/track1;seq=48604;rtptime=271615131’
<< ‘’

    string url = "rtsp://127.0.0.1/2.264";string setupName = "";int rtpPort = 8080;int rtcpPort = rtpPort + 2;string sdp;string sess;//实际上整个过程就在这里RtspRequest.Open(url.c_str());RtspRequest.RequestOptions();RtspRequest.RequestDescribe(&sdp);RtspRequest.RequestSetup(setupName.c_str(), transportModeRtpUdp, rtpPort , rtcpPort , sess);RtspRequest.RequestPlay();

里面最值得注意的就是session,服务端在setup之后是会返回一个session的,如果发送的play命令里面session不对,那服务端会返回找不到session。

     iFind = str.find("Session:");if ( iFind != -1 ){session =  str.substr(iFind+8).c_str() ;size_t begin = 0; size_t end = session.length()-1;for (size_t i = 0; i < session.length(); i++){if (session[i] == ' ')begin = i+1;else if (session[i] == ';'){end = i-1;break;}}if ( m_Session.compare(session)!=0){m_Session = session.substr(begin,end);//printf("setting session id to: %I64u\n", m_Session);}}

以上便是取得session的过程,整个过程并没有结束,切听下回分解

投屏协议与rtsp协议相关推荐

  1. Android PC投屏简单尝试- 自定义协议章(Socket+Bitmap)

    代码地址 :https://github.com/deepsadness/MediaProjectionDemo 效果预览 投屏效果预览 简单说明: 使用Android MediaProjection ...

  2. 视频播放压缩的相关知识点:I帧、P帧、B帧、RTMP协议、RTSP协议、GB28181协议等学习记录

    I帧.P帧.B帧.RTMP协议.RTSP协议.GB28181协议等学习记录 引言 1. I帧.P帧.B帧 1.1 P帧 1.2 B帧 1.3 I帧 2.ONVIF协议与GB28181协议,RTMP与R ...

  3. 流媒体服务器之rtp协议,rtcp协议,rtsp协议,sdp协议,sip协议简析

    0.前言 流媒体服务器做音视频媒体传输主要就两件事:媒体回话协商,媒体数据传输:下面这几种协议就围绕着这两个需求而产生. 1.rtp协议 rtp的全称是实时传输协议RTP(Real-time Tran ...

  4. 网络流媒体协议之——RTSP协议

    原文连接:https://www.cnblogs.com/linhaostudy/p/11140823.html 阅读目录 RTSP报文 正文 RTSP(Real-Time Stream Protoc ...

  5. RTP/RTCP协议与RTSP协议

    基本概念 流式传输 包括顺序流式传输(Progressive Streaming)和实时流式传输(Real-time Streaming).直播场景中使用progressive streaming和r ...

  6. RTMP协议与RTSP协议比较

    考虑做一个手机直播系统,首先需要指定一个合理的技术方案.由于自己以前不是搞多媒体这块,对流媒体开发不熟悉,自己的理解思维总习惯用java web开发的惯性走,先指定一个大体的框架.不管对还是错,先考虑 ...

  7. 一文读懂RTSP协议-【RTSP协议详解】

    RTSP简介 RTSP(Real Time Streaming Protocol)是由Real Network和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议.RTSP对流 ...

  8. Miracast开发4——-应用层rtsp协议

    Mircacast协议介绍---------应用层rtsp协议 前面说到 Miracast协议框架,以及重点讲了发现的过程,物理层链接链接的过程,IP分配的过程,如果获取对端IP等等.下面我们来讲讲, ...

  9. 认识流媒体协议,从 RTSP 协议解析开始!

    RTSP 是 Internet 协议规范,是 TCP/IP 协议体系中的一个应用层协议级网络通信系统.专为娱乐(如音频和视频)和通信系统的使用,以控制流媒体服务器.该协议用于在端点之间建立和控制媒体会 ...

最新文章

  1. rocketmq发送第一条消息(三)
  2. 排序箭头,升序,降序简单实现
  3. Algorand协议详解
  4. javq接口_Java的接口及实例
  5. mini2440的时钟
  6. php中implode()和explode()的应用
  7. 人民币数字金额转大写金额
  8. ip地址管理系统_门禁监控管理系统项目总结
  9. 构建Docker直觉
  10. 随便创建Servlet文件都出现,请求资源不可用的情况
  11. php 合并重复数据合并单元格,通过js合并表格重复出现的数据
  12. 【转载】如何知道自己适合做什么
  13. NOIP模拟题 栅栏
  14. PMP题库重要吗?什么样的题库才是好的题库?
  15. QT学习之做一个简易图片处理器(后续补全)
  16. 【5】分享两个小而实用的IP扫描仪
  17. 【硬件】达林顿驱动电路ULN2000
  18. ElasticJob 3.0 带你快速入门
  19. 小程序微信登陆及账号绑定功能开发笔记
  20. 【模拟考勤打卡程序vim报错分享】

热门文章

  1. Matlab设置滤波器
  2. 融资10亿美元,阿里重仓的十荟团倒下幕后:社区团购的顽疾在哪里?
  3. llvm raw_ostream
  4. Apollo 安装之linux服务器快速安装指南 【亲测】
  5. 2020年第十一届蓝桥杯省赛Java b组题目 答案解析
  6. 格力董事风波意义何在?
  7. 小兵大乱斗服务器维修吗,小兵大乱斗新手怎么玩 小兵大乱斗新萌扫盲攻略
  8. 【已阅】Linux下的用户分类与su/sudo 命令,Linux下的文件类型/用户文件权限身份/文件权限属性/权限与文件权限/ls-l文件属性详解
  9. Java项目:ssm校内超市管理系统
  10. 做为一名java高级程序员,这些IT岗位你都了解么?