live555学习之一整体说明

2023-11-16

live555 是一套采用rtsp协议作为其核心, 可以用来传输接收多媒体包括H264、H265、音频等多媒体数据的开源架构代码集。通过扩展一些类的方式 实现rtsp server 和client端的功能 并且提供源码。其源码 可以是从官网 http://www.live555.com下载.

如何学习live555 并且能够做到1熟悉内部架构,2修改live555实现自己的功能 3.参考live555的架构 采用自己最精简的代码模式来实现传输或者接收多媒体文件的功能。

阶段一: 了解live555的架构功能

根据我自己的理解,live555架构功能上通常都分为如下几个层次。

1.1: 标准协议的熟悉。

1.1.1 RTSP报文通信协议

live555 包含使用了 RTSP 的协议。 

可以参考的文档见附件1

1.1.2 RTP 数据打包协议

    RTSP协议规范 往往约定了, “交互协议”通信信令 和数据传输 采用两条支路。 

可以参考的文档见附件2

1.1.3 SDP 多媒体文件描述协议

多媒体文件种类较多, 有原始的H264、 H265、G711 G726 AAC OPUS音频 。 有封装过的TS PS RTP MP4 MOV avi等文件等。

可以参考的文档见附件3


1.2:C/S 网络通信模式的熟悉

1.2.1 live555 的代码中client 和 server 通信 

采用标准TCP/IP协议 进行通信。 双方通信的报文内容按照“交互协议”的约定进行。

1.2.2 live555 采用单线程的模式进行调度管理

 原先可以写入不同的client客户连接管理采用循环机制管理。 内部维护多个hash表。

       

1.3:功能的模块化 和 架构的扩展性

1.3.1. 多媒体文件的读取 封装为frame类 

 用于实现从不同的源头(内存、文件IO、硬件设备如声卡和摄像头等)读取不同的文件数据到内存。

        1.3.2  文件数据的解析    parse

       1.3.3   文件的RTP封装传输  sink

       1.3.4  和每个客户端的处理封装为 RTSPClientSession类,

用于处理单独的客户会话。


阶段二: 修改live555的代码实现自己的功能

熟悉阶段一的live555 的1.3 功能模块化 和架构的扩展性之后,修改代码实现自己的多媒体文件源头的读取处理。


阶段三: 自己重构rtsp的代码server 端代码

rtsp server 端往往很多都是在嵌入式设备上运行,资源有限。 追求精简。在完成阶段二之后,可以实现自己的 RTSPServer 维护client连接并处理, 生成自己的sdp 描述, 并且自己针对客户端的请求 读取设备文件、Sensor采集编码后的内存数据打包完成传输给客户端。



附件1:RTSP协议的描述

https://github.com/EasyDarwin/Course/blob/master/%E6%B5%81%E5%AA%92%E4%BD%93%E4%BC%A0%E8%BE%93%E6%8E%A7%E5%88%B6%E5%8D%8F%E8%AE%AE(RTSP%20RTP%20SDP)%E8%AF%A6%E8%A7%A3/rtsp.md

附件2:RTP协议的描述

http://www.cnblogs.com/moonvan/archive/2011/09/11/2173448.html

  附件3:SDP协议的描述

https://github.com/EasyDarwin/Course/blob/master/%E6%B5%81%E5%AA%92%E4%BD%93%E4%BC%A0%E8%BE%93%E6%8E%A7%E5%88%B6%E5%8D%8F%E8%AE%AE(RTSP%20RTP%20SDP)%E8%AF%A6%E8%A7%A3/sdp.md



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

live555学习之一整体说明 的相关文章

  • H.264的Slice及Slice类型

    一 基本概念 一个视频图像可编码成一个或更多个条带 每个条带包含整数个宏块 MB 即每个条带至少一个MB 最多时每个条带包含整个图像的宏块 总之 一幅图像中每个条带的宏块数不一定固定 设条带的目的是为了限制误码的扩散和传输 应使编码条带相互
  • 网络安全渗透测试之pingtunnel使用实验

    目录 一 实验环境准备 二 安装pingtunnel 一 在192 168 101 105 web服务器上安装pingtunnel 三 建立ICMP隧道 一 在web服务器上启动pingtunnel 二 在kali上设置转发 三 隧道渗透演
  • 白盒测试(程序流程图)

    白盒测试又称结构测试 透明盒测试 逻辑驱动测试或基于 代码的测试 白盒测试是一种 测试用例设计方法 盒子指的是被测试的 软件 白盒指的是盒子是可视的 你清楚盒子内部的东西以及里面是如何运作的 白盒 法全面了解程序内部逻辑结构 对所有逻辑路径
  • CBC模式解读

    一 什么是CBC模式 CBC模式的全称是Cipher Block Chaining模式 密文分组链接模式 之所以叫这个名字 是因为密文分组像链条一样相互连接在一起 在CBC模式中 首先将明文分组与前一个密文分组进行XOR运算 然后再进行加密
  • LM算法初识

    由于工作内容接触到点云标定 需要用到最小二乘法 所以特意花了点时间研究LM算法 但是由于大学的高等数学忘得差不多了 所以本文从最基本的一些数学概念开始 信赖域法 在最优化算法中 都是要求一个函数的极小值 每一步迭代中 都要求目标函数值是下降
  • canvas系列教程之填充颜色

    艺术离不开色彩 今天咱们来介绍一下填充颜色 体会一下色彩的魅力 填充颜色主要分为两种 基本颜色 渐变颜色 又分为线性渐变与径向渐变 我们一个个来看 填充基本颜色 Canvas fillStyle属性用来设置画布上形状的基本颜色和填充 fil
  • Python + Django4 搭建个人博客(二十):阿里云部署博客项目

    本篇我们将完成我们搭建个人博客的核心功能的最后一篇 部署上线 接下来部分我们将不定期更新一些其他的博客功能 比如 文章栏目 消息通知 用户扩展等小功能模块 目录 准备服务器 安装Xshell 和Xftp 服务器安装软件 安装Mysql 修改
  • vue-loade和vue的版本问题,webpack5

    npm add D vue template compiler 2 6 14 vue loader 15 9 8 const VueLoaderPlugin require vue loader vue加载器 使用node语法获得动态路径
  • Nginx配置文件详细说明

    原创 http www cnblogs com xiaogangqq123 archive 2011 03 02 1969006 html 在此记录下Nginx服务器nginx conf的配置文件说明 部分注释收集与网络 运行用户 user
  • 微信小程序:自定义导航栏

    看到有的微信小程序的页面左上角有了个 小房子 可以返回首页 这是怎么做到的 其实这是微信开放的自定义的自定义导航栏来完成 但是最开始 对于一个页面很多的小程序 其实有点一言难尽 因为你自定义 你可能要所有页面都要添加一遍 现在小程序可以自定
  • 34. Search for a Range

    这道题一开始没看别人的算法 第一个想法是用递归做 自己憋了两个小时终于憋出来了 然而超时 递归的想法是先用二分法找到一个target 然后从target左右再用二分法找边界 然而 真的是 太慢了 class Solution public
  • VSCode问题记录

    20230304 0 引言 这几年的编程方式还真是各种变化 从一开始直接VIM 到后面使用jupyter进行机器学习相关 然后再过渡到vim的形式并加以tmux批量化 最后去年使用了vscode作为IDE 随着工具的变化 那么很多习惯也都随
  • UnityVR--EventManager--事件中心2

    目录 前言 事件中心的结构 EventManager事件管理器 EventType事件类型 EventListener监听及回调 EventDataBase回调时需要传递的参数 总结 前言 上一篇 事件中心1 中 简单解释了委托 事件 监听
  • 【Java SE】类和对象(全网最细详解)

    点进来你就是我的人了博主主页 戳一戳 欢迎大佬指点 欢迎志同道合的朋友一起加油喔 目录 前言 一 面向对象的初步认知 1 什么是面向对象 2 面向对象和面向过程的区别 二 类和对象的基本概念 三 类和对象的定义和使用 1 类的创建 2 对象
  • 数据库的url配置8.0

    spring datasource username root spring datasource password lhh12345 spring datasource url jdbc mysql localhost 3306 myba
  • numpy.diag()结构及用法

    numpy diag v k 0 官方文档 以一维数组的形式返回方阵的对角线 或非对角线 元素 或将一维数组转换成方阵 非对角线元素为0 两种功能角色转变取决于输入的v 1 更深层的见numpy diagnal 参数详解 v array l

随机推荐

  • windows获取系统DPI

    dc GetDeviceCaps LOGPIXELSX 每英寸水平逻辑像素数 dc GetDeviceCaps LOGPIXELSY 每英寸垂直逻辑像素数 dc GetDeviceCaps HORZRES 水平像素总数 dc GetDevi
  • [Java]获取java方法注释实例

    Method methods company class getMethod getId null PK pk methods getAnnotation PK class System out println pk
  • vue指令中v-show和v-if以及keep-alive的区别

    v if 属于条件显示 满足条件就显示元素 不满足就删除元素 通过操作DOM元素完成 v if的首次渲染显示的开销较小 因为它只渲染满足条件的那一个元素 切换组件时 其开销较大 因为它每切换以此就要重新触发生命周期渲染显示新元素 v if值
  • JS实现轮播图(自动+手动)

    网页轮播图效果 核心原理 tips 代码在文章末尾 这个ul就是我们这四张图片的父盒子 我们通过对这个父盒子添加动画函数来实现移动 然后给父盒子来一个溢出隐藏就达到了轮播的效果 动画函数如下 function animate obj tar
  • 【python爬虫】8.温故而知新

    文章目录 前言 回顾前路 代码实现 体验代码 功能拆解 获取数据 解析提取数据 存储数据 程序实现与总结 前言 Hello又见面了 上一关我们学习了爬虫数据的存储 并成功将QQ音乐周杰伦歌曲信息的数据存储进了csv文件和excel文件 学到
  • 8.typescript-函数的类型

    今儿个甚是乏累呢 但是 lt 下面可能是正题儿 gt 1 函数声明 1 function student x string y number string 2 return 我是 x 今年 y 岁 3 4 5 console log stu
  • 商品期货怎么玩? 1手交易需要多少钱?

    期货市场中有许多大宗商品 把他们统称为商品期货 近几年我国商品期货品种不时在增加 固然期货风险比较高 但收益也十分可观 而且商品期货开户几乎没有门槛 国内商品期货免费开户 无资金限制 凭身份证和银行卡即可办理 开设期货帐户 能在网上开期货帐
  • Unity XCode iOS 实现拍照和相册选择上传头像

    显示弹窗 通过UIAlertController来创建一个弹窗 if defined cplusplus extern C endif 导出接口供unity使用 void IOS Open IOSCameraController app I
  • 剑指 Offer 25. 合并两个排序的链表(java+python)

    输入两个递增排序的链表 合并这两个链表并使新链表中的节点仍然是递增排序的 示例1 输入 1 gt 2 gt 4 1 gt 3 gt 4 输出 1 gt 1 gt 2 gt 3 gt 4 gt 4 限制 0 lt 链表长度 lt 1000 思
  • sql语句学习(b站韩顺平的demo)

    表的CRUD varchar varchar2 char的区别 时间 时间戳使用 创建表 创建一张表 表结构与已经存在的表一致 查看表的信息 表中增加一列 修改表中的列 删除表中的列 修改表名 修改表的字符集 修改表中的列名 表中数据的插入
  • 关于算法,我们都应知道的

    定义 算法是指对特定问题求解步骤的一种描述 特性 1 有穷性 算法是由若干条指令组成的有穷序列 总是在执行若干次后结束 不可能永不停止 2 确定性 每条语句有确定的含义 无歧义 3 可行性 算法在当前环境条件下可以通过有限次运算实现 4 输
  • JavaEE学习记录day09集合03 Map集合、Stream流

    JavaEE学习记录day09集合03 Map集合 Stream流 1 Map集合 1 1Map集合概述和特点 理解 Map集合概述 interface Map
  • 看书标记【R语言数据分析与挖掘实战】5

    第五章 挖掘模型 5 1 分类预测 回归分析 回归分析是确定预测属性 数值型 与其他变量间相互依赖的定量 关系的最常用的统计学方法 包括线性回归 非线性回归 Logistic回归 因变量有0 1两种取值 岭回归 自变量间有多重共线性 主成分
  • JavaScript引擎,V8引擎的原理

    为什么需要JavaScript引擎 高级的编程语言都是需要转成最终的机器指令来执行 我们所编写的js无论h是交给浏览器或者node执行 最后都是需要被CPU执行的 CPU只认识自己的指令集 机器语言 才能被CPU所执行 所以我们需要js引擎
  • 关于ngx_rtmp_hls_append_sps_pps造成的hls: error appenging SPS/PPS NALs错误

    关于ngx rtmp hls append sps pps造成的hls error appenging SPS PPS NALs错误 一giao我哩giao 今天在调试同rtmp配合nginx推流的时候 发现推live可以推成功 结果在推h
  • 多因素认证与身份验证:分析不同类型的多因素认证方法,介绍如何在访问控制中使用身份验证以增强安全性

    随着数字化时代的到来 信息安全问题变得愈发重要 在网络世界中 用户的身份往往是保护敏感数据和系统免受未经授权访问的第一道防线 单一的密码已经不再足够 多因素认证 MFA 应运而生 成为提升身份验证安全性的重要工具之一 本文将深入探讨不同类型
  • rpm常用命令记录

    文章目录 1 常用rpm命令 2 rpm参数 1 常用rpm命令 rpm ivh xxx rpm 安装rpm rpm Uvh xxx rpm 升级rpm rpm e xxx rpm 删除rpm rpm qi xxx rpm 查看安装包的信息
  • node.js 数据实现分页问题(后端)

    最近在写项目时 碰到的问题 let arr let rows for let e 0 e
  • TCP 和 UDP 的 Socket 调用

    在网络层 Socket 函数需要指定到底是 IPv4 还是 IPv6 分别对应设置为 AF INET 和 AF INET6 另外 还要指定到底是 TCP 还是 UDP TCP 协议是基于数据流的 所以设置为 SOCK STREAM 而 UD
  • live555学习之一整体说明

    live555 是一套采用rtsp协议作为其核心 可以用来传输接收多媒体包括H264 H265 音频等多媒体数据的开源架构代码集 通过扩展一些类的方式 实现rtsp server 和client端的功能 并且提供源码 其源码 可以是从官网