代码改变世界

随笔分类 -  RTSP客户端

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(十)使用JRTPLIB传输RTP数据

2018-05-04 18:18 by Ansersion, 2659 阅读, 收藏,
摘要: myRtspClient通过简单修改JRTPLIB的官方例程作为其RTP传输层实现。因为JRTPLIB使用的是CMAKE编译工具,这就是为什么编译myRtspClient时需要预装CMAKE。 该部分所有代码均集中在myRtpSession.cpp中,接下来将对其进行分析。 一、获取RTP数据 此处 阅读全文

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(九)以g711-mulaw为例添加新的编码格式解析支持

2018-04-18 22:27 by Ansersion, 1246 阅读, 收藏,
摘要: 一、myRtspClient音频解析架构 AudioTypeBase是处理解析各种编码的音频数据的接口类。处理MPA数据的MPEG_Audio类和处理g711-mulaw的PCMU_Audio类均从AudioTypeBase继承而来。AudioTypeBase最重要的接口为CopyData,它的作用 阅读全文

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(八)RTP音视频传输解析层之MPA传输格式

2018-02-08 17:02 by Ansersion, 1189 阅读, 收藏,
摘要: 一、MPEG RTP音频传输 相较H264的RTP传输格式,MPEGE音频传输格式则简单许多。 每一包MPEG音频RTP包都前缀一个4字节的Header,如下图(RFC2550) “MBZ”必须为0(MustBeZero)。 “Frag_offset”为该包中有效的音频字节数。 myRtspClie 阅读全文

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(七)RTP音视频传输解析层之H264传输格式

2017-10-14 18:31 by Ansersion, 2465 阅读, 收藏,
摘要: 一、H264传输封包格式的2个概念 (1)组包模式(Packetization Modes) RFC3984中定义了3种组包模式:单NALU模式(Single Nal Unit Mode)、非交错模式(Non-interleaved Mode)和交错模式(Interleaved Mode)。 “单N 阅读全文

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(六)RTP音视频传输解析层之音视频数据传输格式

2017-09-23 18:26 by Ansersion, 1463 阅读, 收藏,
摘要: 一、差异 本地音视频数据格式和用来传输的音视频数据格式存在些许差异,由于音视频数据流到达客户端时,需要考虑数据流的数据边界、分包、组包顺序等问题,所以传输中的音视频数据往往会多一些字节。 举个例子,有时候一个媒体分包数据量很大(比如H264的一个分包常常会有2-4K),而大多数网络的MTU(最大传输 阅读全文

关于RTSP-Over-HTTP

2017-09-13 11:46 by Ansersion, 7256 阅读, 收藏,
摘要: 更新2018.07.10 myRtspClient-1.3.0开始支持RTSP-Over-HTTP 更新2018.07.10结束 一、概述 RTSP-Over-HTTP的关键(同时也是全部内容)在于:让RTSP报文通过HTTP端口(即80端口)通信。 我们知道RTSP的标准端口是554,但是由于各种 阅读全文

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(五)用户接口层之提取媒体流数据

2017-08-24 20:36 by Ansersion, 1496 阅读, 收藏,
摘要: 当RTSP客户端向RTSP服务端发送完PLAY命令后,RTSP服务端就会另外开启UDP端口(SDP协商定义的端口)发送RTP媒体流数据包。这些数据包之间会间隔一段时间(毫秒级)陆续被发送到RTSP客户端,此时RTSP客户端可以调用GetMediaData等接口获取媒体流数据。 一、uint8_t * 阅读全文

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(四)用户接口层之处理SDP报文

2017-08-23 16:25 by Ansersion, 1226 阅读, 收藏,
摘要: 当RTSP客户端向RTSP服务端发送DESCRIBE命令时,服务端理应当回复一条SDP报文。 该SDP报文中包含RTSP服务端的基本信息、所能提供的音视频媒体类型以及相应的负载能力,以下是一段SDP示例: RTSP/1.0 200 OK Server: VLC/2.1.6 Date: Sun, 06 阅读全文

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(三)用户接口层之RTSP命令

2017-07-10 23:32 by Ansersion, 1361 阅读, 收藏,
摘要: 截至版本1.2.3,myRtspClient函数库共支持以下6个RTSP命令(RFC 2326): (1)OPTIONS (2)DESCRIBE (3)SETUP (4)PLAY (5)PAUSE (6)TEARDOWN 对应的接口函数都以“Do”开头,如“DoOPTIONS”。各个接口函数写法相似 阅读全文

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(二)用户接口层之RtspClient类及其构造函数

2017-07-09 10:55 by Ansersion, 1664 阅读, 收藏,
摘要: RtspClient类是myRTSPClient函数库所有特性集中实现的地方。 主要为用户提供: 1. RTSP协议通信接口函数,如DoOPTIONS(); 2. RTSP账号、密码设置函数,如SetUsername(); 3. 音视频码流接收函数,如GetVideoData()。 本篇主要介绍Rt 阅读全文

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——解码篇:(三)一个简单的rtsp播放器

2017-06-14 00:06 by Ansersion, 2158 阅读, 收藏,
摘要: 该篇内容简单的将前两篇内容组合在一起,创建了2个线程,分别播放音频和视频。 至此,“解码篇”内容告一段落,接下来将介绍myRTSPClient的具体实现,以便可以更好的理解音视频的传输机制。 注: 1, 示例源码编译需要SDL和ffmpeg,具体可参见解码视频的附录二; 2, 博主编译环境为 x86 阅读全文

一个基于JRTPLIB的轻量级RTSP客户端——myRTSPClient详解

2017-06-08 23:35 by Ansersion, 7682 阅读, 收藏,
摘要: myRTSPClient是一个轻量级的RTSP客户端C++函数库。 支持多平台,支持H264,H265,MPA等音视频传输。 免费开源,接口易用,配套教程与代码解析(本博客)。 适合RTSP入门学习。 适用轻量级RTSP客户端设备开发。 github库:https://github.com/Anse 阅读全文

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(一)概览

2017-06-07 23:20 by Ansersion, 1365 阅读, 收藏,
摘要: myRTSPClient主要可以分成3个部分: 1. RTSPClient用户接口层; 2. RTP 音视频传输解析层; 3. RTP传输层。 “RTSPClient用户接口层”: 包含所有myRTSPClient的外显特性,包括与RTSP服务器交互接口和音视频数据提取接口,直接供用户使用。 “RT 阅读全文

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——解码篇:(二)用ffmpeg解码音频

2016-03-17 10:15 by Ansersion, 1794 阅读, 收藏,
摘要: 其实这篇的内容和(一)用ffmpeg解码视频基本是一样的,重点还是给ffmpeg指定callback函数,而这个函数是从RTSP服务端那里获取音频数据的。 这里,解码音频的示例代码量之所以比解码视频的略微复杂,主要是因为ffmpeg解码音频时要比解码视频要复杂一点,具体可以参见ffmpeg解码音频示 阅读全文

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——解码篇:(一)用ffmpeg解码视频

2016-02-23 11:30 by Ansersion, 4370 阅读, 收藏,
摘要: 一、概述 myRTSPClient(RTSPClient)获取音视频数据之后,接下来的工作便是将音视频数据交给解码器去解码(ffmpeg),ffmpeg解码之后于是便有了呈现在终端用户(USER)面前的视频(Video)和音频(Audio),具体过程如下图所示。 关于myRTSPClient从RTS 阅读全文

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——收流篇:(三)RTSP命令解析

2015-12-28 10:53 by Ansersion, 4294 阅读, 收藏,
摘要: 一、RTSP命令简述 RTSP是用来控制实时流媒体“播放”、“暂停”、“停止”、“录像”等行为的传输协议。该协议规定了一系列命令以及这些命令的发送格式,RTSP客户端可以通过发送这些指定的命令,从而控制媒体流数据的传输。rfc2326上明确指定的有以下11个命令:DESCRIBE, ANNOUNCE 阅读全文

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——收流篇:(二)示例

2015-12-28 10:53 by Ansersion, 8464 阅读, 收藏,
摘要: 一、搭建RTSP服务器 要想测试RTSP客户端,没有服务端怎么行呢?然而,有时候条件有限,手头并没有独立的RTSP服务器拿来用,那么我们不妨自己撘一个。 以下有2种方便的做法可供选择: 第一种:使用vlc播放器(推荐做法) 这种方法最方便,而且任何视频格式的文件都可以拿来测试,具体做法网上有很多,以 阅读全文

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——收流篇:(四)example代码解析

2015-12-28 10:53 by Ansersion, 4726 阅读, 收藏,
摘要: 更新2018.08.20 添加http_tunnel_example.cpp作为RtspOverHttp示例程序。 更新2018.08.20结束 一、example逻辑伪码 myRTSPClient附带3个example程序:simple_example、complete_example、commo 阅读全文

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——收流篇:(一)简介

2015-12-28 10:52 by Ansersion, 9932 阅读, 收藏,
摘要: 关于实时流媒体传输的开源库,目前流行的主要有两个:live555和jrtplib。 其中live555将rtp、rtcp和rtsp的传输协议实现集于一身,功能齐全,是个超强的集合体。但是对于嵌入式系统来说,live555的负载明显过大(与tcp直接传输媒体流相比)。 而jrtplib则是只实现了rt 阅读全文