投屏协议与rtsp协议
投屏协议
以实时性来说,需要用到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协议相关推荐
- Android PC投屏简单尝试- 自定义协议章(Socket+Bitmap)
代码地址 :https://github.com/deepsadness/MediaProjectionDemo 效果预览 投屏效果预览 简单说明: 使用Android MediaProjection ...
- 视频播放压缩的相关知识点: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 ...
- 流媒体服务器之rtp协议,rtcp协议,rtsp协议,sdp协议,sip协议简析
0.前言 流媒体服务器做音视频媒体传输主要就两件事:媒体回话协商,媒体数据传输:下面这几种协议就围绕着这两个需求而产生. 1.rtp协议 rtp的全称是实时传输协议RTP(Real-time Tran ...
- 网络流媒体协议之——RTSP协议
原文连接:https://www.cnblogs.com/linhaostudy/p/11140823.html 阅读目录 RTSP报文 正文 RTSP(Real-Time Stream Protoc ...
- RTP/RTCP协议与RTSP协议
基本概念 流式传输 包括顺序流式传输(Progressive Streaming)和实时流式传输(Real-time Streaming).直播场景中使用progressive streaming和r ...
- RTMP协议与RTSP协议比较
考虑做一个手机直播系统,首先需要指定一个合理的技术方案.由于自己以前不是搞多媒体这块,对流媒体开发不熟悉,自己的理解思维总习惯用java web开发的惯性走,先指定一个大体的框架.不管对还是错,先考虑 ...
- 一文读懂RTSP协议-【RTSP协议详解】
RTSP简介 RTSP(Real Time Streaming Protocol)是由Real Network和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议.RTSP对流 ...
- Miracast开发4——-应用层rtsp协议
Mircacast协议介绍---------应用层rtsp协议 前面说到 Miracast协议框架,以及重点讲了发现的过程,物理层链接链接的过程,IP分配的过程,如果获取对端IP等等.下面我们来讲讲, ...
- 认识流媒体协议,从 RTSP 协议解析开始!
RTSP 是 Internet 协议规范,是 TCP/IP 协议体系中的一个应用层协议级网络通信系统.专为娱乐(如音频和视频)和通信系统的使用,以控制流媒体服务器.该协议用于在端点之间建立和控制媒体会 ...
最新文章
- rocketmq发送第一条消息(三)
- 排序箭头,升序,降序简单实现
- Algorand协议详解
- javq接口_Java的接口及实例
- mini2440的时钟
- php中implode()和explode()的应用
- 人民币数字金额转大写金额
- ip地址管理系统_门禁监控管理系统项目总结
- 构建Docker直觉
- 随便创建Servlet文件都出现,请求资源不可用的情况
- php 合并重复数据合并单元格,通过js合并表格重复出现的数据
- 【转载】如何知道自己适合做什么
- NOIP模拟题 栅栏
- PMP题库重要吗?什么样的题库才是好的题库?
- QT学习之做一个简易图片处理器(后续补全)
- 【5】分享两个小而实用的IP扫描仪
- 【硬件】达林顿驱动电路ULN2000
- ElasticJob 3.0 带你快速入门
- 小程序微信登陆及账号绑定功能开发笔记
- 【模拟考勤打卡程序vim报错分享】
热门文章
- Matlab设置滤波器
- 融资10亿美元,阿里重仓的十荟团倒下幕后:社区团购的顽疾在哪里?
- llvm raw_ostream
- Apollo 安装之linux服务器快速安装指南 【亲测】
- 2020年第十一届蓝桥杯省赛Java b组题目 答案解析
- 格力董事风波意义何在?
- 小兵大乱斗服务器维修吗,小兵大乱斗新手怎么玩 小兵大乱斗新萌扫盲攻略
- 【已阅】Linux下的用户分类与su/sudo 命令,Linux下的文件类型/用户文件权限身份/文件权限属性/权限与文件权限/ls-l文件属性详解
- Java项目:ssm校内超市管理系统
- 做为一名java高级程序员,这些IT岗位你都了解么?