Source Sink (live555)
Source & Sink
Source 和 Sink 在live555中是两个非常重要的概念.
Source 发送端, 流的起点, 可直观理解为生产者, 负责读取文件或网络流的信息.
Sink 接收端, 流的终点, 可理解为是消费者, 直译为水槽 .
视音频的数据从源头到最终保存到文件或显示, 整个过程就像一个水流, 从源头流呀流, 经过了条条小路, 最终流到了水槽中.
Source: 可能是RTP读取数据, 从文件中或摄像头设备中等.
Sink: 数据流最终可保存在文件中, 或显示在屏幕上等.
MediaSession: 用于表示一个RTP会话, 一个MediaSession可能包含多个子会话(MediaSubSession),子会话可以是音频子会话、视频子会话等。
Source和Sink通过RTP子会话(MediaSubSession)联系在一起.
MediaSource - 流的源头
MediaSouce是所有Souce的基类.
MediaSource
结合上图, 以H264进行举例:
H264VideoStreamFramer
H264VideoStreamFramer是真正的Souce,它用于从H264文件中读取数据,并组装成帧。
MediaSink - 流的终结
MediaSink是所有Sink的基类.
MediaSink
结合上图, 以H264进行举例:
H264VideoFileSink类继承关系
H264VideoFileSink才是真正的Sink, 完成将数据保存至文件.
H264VideoRTPSink类继承关系
H264VideoRTPSink才是真正的Sink, 完成数据的发送.
对于H264码流,数据流的流动方向为:
服务器端:
H264VideoStreamFramer ->H264Or5Fragmenter (Filter)r->H264VideoRTPSink
客户端:
H264RTPSouce -> Sink
作者:FlyingPenguin
链接:https://www.jianshu.com/p/0bdf07f7a5d5
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
Source Sink (live555)相关推荐
- 1.31.Flink自定义rocketmq(source/sink)+自定义redis source和sink
1.31.Flink自定义rocketmq(source/sink)+自定义redis+自定义 1.31.1.工程结构 1.31.2.定义pom.xml文件 1.31.3.log4j2.propert ...
- 1.10.Flink DataStreamAPI(API的抽象级别、Data Sources、connectors、Source容错性保证、Sink容错性保证、自定义sink、partition等)
1.10.Flink DataStreamAPI 1.10.1.Flink API的抽象级别 1.10.2.DatSource部分详解 1.10.2.1.DataStream API之Data Sou ...
- 【Flnik】解决提交程序到flink集群的异常:Could not complete snapshot 3 for operator Source...
一. 情况描述 之前一直在IDEA中运行Flink程序,程序也都很顺利的跑通.但是当把程序打包发布到集群上运行便遇到了一些情况: bin/flink run -m hadoop102:8081 -c ...
- 【Flink流式计算框架】常见sink操作
007Flink print() / printToErr() writeAsText() Flink提供的sink 自定义sink 获取source的方式(自带的) 基于文件:read ...
- Flink SQL 自定义 Sink
1. 背景 2. 步骤 3.自定义 sink 代码 4. 使用 Redis Sink 5.详细解释 6.原理 7.参考 1.背景 内部要做 Flink SQL 平台,本文以自定义 Redis Sink ...
- 【Flink】Flink 自定义 redis sink
1.概述 内部要做 Flink SQL 平台,本文以自定义 Redis Sink 为例来说明 Flink SQL 如何自定义 Sink 以及自定义完了之后如何使用 基于 Flink 1.11 2.步骤 ...
- WFD连接过程代码分析(Sink端)
WFD连接过程代码分析(Sink端) WFD建立连接首先必需建立P2P连接,随后WFD使用P2P连接的IP和端口号建立RTSP连接.本文着重分析P2P连接建立后的RTSP连接建立过程,且为一个Sour ...
- HTTP 2.0与OkHttp
HTTP 2.0是对1.x的扩展而非替代,之所以是"2.0",是因为它改变了客户端与服务器之间交换数据的方式.HTTP 2.0增加了新的二进制分帧数据层,而这一层并不兼容之前的H ...
- 基于Apache Flink的爱奇艺实时计算平台建设实践
导读:随着大数据的快速发展,行业大数据服务越来越重要.同时,对大数据实时计算的要求也越来越高.今天会和大家分享下爱奇艺基于Apache Flink的实时计算平台建设实践. 今天的介绍会围绕下面三点展开 ...
- Nature子刊:微生物来源分析包SourceTracker
前一阵我们翻译Rob Knight的综述,1.8万字,让你熟读2遍轻松握掌微生物组领域分析框架.把握未来分析趋势.目前在宏基因组平台累计1.9万人次,热心肠平台首发阅读8500+,科学网加精置顶阅读8 ...
最新文章
- 爬虫基础-request的一些基础属性
- 电脑任务管理器_安国戴尔电脑显示器维修,服务至上
- java中有哪几种注释方式_在 Java 中, 有多种注释方法,其中 __________ 适用于单行注释。...
- [转帖]Linux修改时区
- Java相关资料分享(视频+电子书籍)
- 强调团体与配合的jinbiguandan
- 华为服务器默认什么系统,云服务器默认系统
- 训练集、验证集、测试集区分
- jsp页面判断输入编号已存在mysql中_面试官让我聊聊Mysql基础架构之日志文件与数据文件...
- T3137 栈练习1 codevs
- c#对PL/SQL查询结果列复制的结果生成指定格式
- elipse下载及安装
- 计算机程序员crc算法,CRC-8校验原理及软件实现
- oracle创建视图包含clob字段,报错:数据类型不一致:应为-,但却获得CLOB
- 问题解决模型ORID
- 第一章 C语言程序设计概述
- 使用node+vue.js实现SPA应用,解决了SPA应用的最大缺点SEO
- 【地理人工智能交叉】通过整合兴趣点和Word2Vec模型感知城市土地利用的空间分布
- 圣戈班集团2019年销售额426亿欧元,增长2.4%
- AVplayer断网播放出错时player的duration、playableDuration、totalTime
热门文章
- 2021年12月大学英语六级作文
- DP动态规划之背包问题(一)
- windows 上面git 克隆clone 的时候报错 warning:Clone succeeded,but checkout failed
- 双击打不开pycharm问题
- [zz]u盘做系统启动盘后容量变小的解决方法 8GU盘变成2G 或 xG变成2G
- 北上广深,逃离还是奔向?
- 美式期权定价python_美式期权baw定价的python实现
- 事务故障、系统故障和介质故障的恢复
- sass @media
- excel找到对应数据的列指标_Excel 行列转换的最简方法