RTSP协议转换RTMP直播协议

简介: RTSP协议转换RTMP直播协议

  RTSP协议也是广泛使用的直播/点播流媒体协议,以前的项目里实现了一个RTSP协议转换RTMP直播协议的程序,为的是可以接收远端设备或服务器的多路RTSP直播数据,实时转换为RTMP直播协议,推送到NginxRtmp等RTMP服务器,可以在PC上实现flash观看RTSP直播源(比如IPCAM)的需求,也能通过Nginx的HLS协议转换,在手机上观看。实现的思路分享如下。

要点分析

  首先,程序的主要目的,是从多路RTSP输入源中提取AAC编码的音频和H.264编码视频数据,并生成RTMP数据包,然后组装RTMP推送协议,并发往RTMP服务器。在发送的过程中,要求可以从RTSP数据源切换到具有相同h.264和aac编码的FLV文件中,并不影响RTMP直播。因此,本程序的关键点有以下部分:

  1. RTSP直播流的读取
  2. H.264AAC编码数据的分析、处理
  3. FLV文件数据的提取及与RTSP直接的切换和衔接
  4. RTMP数据包封装
  5. RTMP推送协议

  有了关键点,就可以一项一项的去分析。

 

设计思路

  根据上面分析的要点,首先要选择RTSP直播协议的读取。我们不需要从零做起,网络上有很多和RTSP相关的开源项目可以使用或借鉴,我选择了Live555。(后来我也做了通过ffmpeg接口来读取RTSP数据的项目,也很不错,各有优缺点)

  Live555是一个跨平台的流媒体解决方案,主要支持RTSP协议,好像也支持SIP(这个也是我马上研究的重点,之后会写文章研究SIP相关的技术实现)。Live555实现了RTSP包括服务器-客户端的整套结构,是很知名的一个开源项目。网上有很多关于Live555学习和使用的文章,我就不具体介绍了。

  H.264和AAC数据的分析处理,这个对于从没做过相关项目开发的人来说,应该是一个难点,主要是相关概念的理解。好在我一直在做这块,也比较好弄。

  第4和第5点,可以参照我之前的文章“RTMP协议发送H.264编码及AAC编码的音视频,实现摄像头直播”的技术方法,来加以实现。因此,主要需要处理的就是RTSP直播流数据的获取,以及对其中H.264和AAC编码数据的处理。

  于是可以画出大体结构如下:

  

 

逻辑与实现

1. 程序框架和模块说明

  

 

2. 主要接口

  

  RtspCapture是我的程序里管理RTSP直播数据流和分析处理的类,接口很重要,基本上这个设计就可以。(当然,全部代码是不会放上来的,有兴趣的可以和我谈,这里只罗列关键的地方。)

  

  他所使用的live555变量,这里ourRTSPClient实际就是RTSPClient的简单继承

  

3.RtspCapture调用live555的主要流程

  1. 首先,在RtspCapture构造函数初始化

  

  2. 在StartRtsp函数中,创建RtspClient,并发送"describe"命令,开始获取sdp。回调函数就是continueAfterDESCRIBE。在这里创建MediaSession,之后再发送"setup"命令,等,这些都可以在live555的例子以及网上的说明中看到。

  

  3. 还有一个关键点,就是要在自己的线程循环中,调用live555 environment的事件循环,就像这样

  

4. 对rtsp回调h264数据的分析处理

  这里演示了,如何从rtsp回调的h264数据中,提取sps和pps信息。里面的parse函数,是live555自带的。

  

调用方式

  

目录
相关文章
|
人工智能 智能设计
LOGO在线设计就选阿里云!阿里云智能LOGO免费在线体验!
LOGO在线设计就选阿里云!阿里云智能LOGO免费在线体验!阿里云logo免费在线设计
4747 0
LOGO在线设计就选阿里云!阿里云智能LOGO免费在线体验!
若依框架 --- echarts 封装
若依框架 --- echarts 封装
625 0
|
机器学习/深度学习 人工智能 大数据
kde
|
3月前
|
存储 文件存储 Docker
威联通 Docker 国内镜像源加速配置全攻略
本文介绍了如何在威联通NAS上配置轩辕镜像仓库以加速Docker镜像拉取。内容包括:获取免登录镜像仓库地址、配置自定义存储库、测试镜像拉取及日常使用优化建议。通过简单几步即可提升镜像下载速度与稳定性,适用于个人及企业用户。
kde
1022 1
|
5月前
|
API 监控 双11
淘宝/天猫获取商品历史价格信息 API 返回值的应用
本内容介绍了一款基于API的工具的核心功能,涵盖消费者决策支持、商家运营优化、市场趋势分析及数据服务拓展四大方面。消费者可借助历史价格曲线判断价格合理性、选择最佳购买时机;商家可通过竞品数据分析优化定价策略与促销活动;第三方平台能监测价格波动、跟踪竞品动态以洞察市场趋势。此外,工具还支持比价工具开发与价格预警服务,为用户和企业带来全方位的价格智能解决方案。
|
9月前
|
安全 网络协议 网络安全
解析HTTP代理服务器不稳定致使掉线的关键原因
随着数字化发展,网络安全和隐私保护成为核心需求。HTTP代理服务器掉线原因主要包括:1. 网络问题,如本地网络不稳定、路由复杂;2. 服务器质量差、IP资源不稳定;3. 用户配置错误、超时或请求频率异常;4. IP失效或协议不兼容。这些问题会影响连接稳定性。
272 8
|
12月前
|
存储 Web App开发 监控
Vuex学习一:了解Vuex,初始用vuex,vuex状态管理图的讲解
这篇文章是关于Vuex的基本使用和状态管理的教程,包括项目搭建、Vuex配置、状态共享问题、Vuex介绍以及如何在Vue组件中使用Vuex进行状态管理。
201 0
Vuex学习一:了解Vuex,初始用vuex,vuex状态管理图的讲解
|
监控 安全 网络协议
这10款网络扫描工具,是个网工,都想全部安装!
这10款网络扫描工具,是个网工,都想全部安装!
1534 1
|
安全 开发者
《源于支付宝的人脸认证:速度快、体验好、通过率高》
《源于支付宝的人脸认证:速度快、体验好、通过率高》
590 1