流媒体与直播的基础理论(其一)

在这里插入图片描述

欢迎诸位来阅读在下的博文~
在这里,在下会不定期发表一些浅薄的知识和经验,望诸位能与在下多多交流,共同努力

文章目录

  • 一、流媒体简介
  • 二、流媒体协议
      • 常见的流媒体协议
  • 三、视频直播原理与流程
      • 通用的视频直播模型
      • 视频直播链路

一、流媒体简介

  • 流媒体是指将一连串的媒体数据压缩后,经过网上分段发送数据,在网上及时传输影音以供观赏的一种技术与过程,此技术使数据得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件。
  • 完整的流媒体平台包括:前端摄像头、流媒体服务器、磁盘阵列、视频综合管理、电视墙、客户端等。
    在这里插入图片描述
  • 流媒体最主要的技术特征是流式传输,它使数据像流水一样传输。实现流式传输主要有两种方式:顺序流式传输 和 实时流式传输。
    01 顺序流式传输是指顺序下载,用户在观看在线媒体的同时下载文件,在这一过程中,用户只能观看已下载完的部分,而不能直接观看未下载完的部分。由于标准的HTTP服务器就可以完成这种工作,所以也被称为HTTP流式传输。
    优点:由于流式传输能够较好地保证节目播放的质量,因此比较适合在网站上发布的、可供用户点播的、高质量的视频。顺序流式文件存放在标准HTTP或FTP服务器上,易于管理,基本上与防火墙无关。
    缺点:顺序流式传输不支持现场广播,也不适合长片段和有随机访问要求的视频。
    02 实时流式传输必须保证匹配连接带宽,使媒体可以被实时观看到。在观看过程中用户可以任意观看媒体前面或者后面的内容。实时流式传输需要特定服务器,如 Quick Time Streaming Server、Realserver、Windows Media Server、SRS、ZLMediaKit等。这些服务器允许对媒体发送进行更多级别的控制,因而系统设置、管理比标准的HTTP服务器更复杂。实时流式传输还需要特殊网络协议,如实时流协议(RTSP)或 微软媒体服务。
    优点:实时流式传输意味着数据在发送和接收之间几乎没有延迟,用户可以立即体验内容,非常适合现场事件。
    缺点:不稳定的网络连接可能导致缓冲和延迟,需要自适应流技术来调整流的质量。此外,还要考虑防火墙的问题。

二、流媒体协议

在这里插入图片描述

  • 常见的流媒体协议是基于数据应用层的协议(UDP,UDP除外,因为UDP是传输层的协议,也是流媒体中常用的协议)

常见的流媒体协议

流媒体协议是用于传输音频和视频数据的标准化方法,确保数据在网络上实时传输的有效性和可靠性。以下是一些常见的流媒体协议:

  1. RTMP (Real-Time Messaging Protocol)
  • 用途:用于音频、视频和数据在互联网上的实时传输。
  • 特点:支持低延迟流媒体传输,常用于直播应用。最初由Adobe开发,用于Flash播放器。协议延迟非常低,但由于需要flash插件,不建议使用该协议,但流提取是例外。
  • 总结:一个老的协议,正在淘汰中。
  1. HLS (HTTP Live Streaming)
  • 用途:由Apple开发,支持在HTTP上进行流媒体传输。
  • 特点:将媒体内容切分成小片段,客户端可以动态选择合适的质量,适应网络条件。
  • 总结:使用最广泛的协议之一。
  1. MPEG-DASH
  • 用途:一种自适应流媒体传输技术,可以根据网络条件动态调整视频质量。支持绝大多数编解码器,支持加密媒体扩展和媒体扩展源。
  • 特点:支持多种编码格式,灵活性高,也使用类似HLS的分片技术。
  • 总结:属于当代最新的协议之一,但是未被广泛使用,有发展潜力。
  1. RTSP (Real-Time Streaming Protocol)
  • 用途:用于控制流媒体服务器,支持点播和实时流。
  • 特点:类似于HTTP,允许客户端发送播放、暂停、停止等控制命令。常与RTP(Real-Time Transport Protocol)一起使用,以传输音频和视频数据。
  • 总结:在IP摄像头和网络视频监控中广泛使用,但在一般流媒体应用中逐渐被其他协议取代。
  1. SRT (Secure Reliable Transport)
  • 用途:用于低延迟和高安全性的视频传输。
  • 特点:设计用于在不稳定的网络环境中提供可靠的流媒体传输,支持加密和纠错机制。
  • 总结:适合直播和远程制作,越来越受到关注并逐渐被采纳。
  1. WebRTC (Web Real-Time Communication)
  • 用途:支持在浏览器中进行实时音视频通信。
  • 特点:无需插件,支持点对点连接,极低延迟,适用于语音和视频聊天应用。
  • 总结:在实时通信领域具有广泛应用前景,特别是在视频会议和在线互动中。

三、视频直播原理与流程

在这里插入图片描述
这里着重讲解一下推流和服务器分发。
推流:直播的基础保障,如果推流的网络不稳定,则无论如何优化,观众的体验都很差,所以也是排查问题的第一步。常见的推流协议有如下两种:

  • 实时流传送协议(RTSP),是用来控制声音或者影像的多媒体串流协议。
  • 实时消息传送协议(RTMP),是Adobe公司为Flash播放器和服务器之间声频、视频和数据传输而开发的开放协议。
    RTMP基于TCP,是一种设计用于进行实时数据通信的网络协议,主要用于在flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。它是目前主流的流媒体传输协议,广泛用于直播领域。支持该协议的软件包括Adobe Media Server/Ultrant Media Server/Red5等。它有三种变种:RTMP工作在TCP之上的明文协议,使用端口1935;RTMPT封装在HTTP请求之中,可穿越防火墙;RTMPS类似于RTMPT,但使用的是HTTPS链接。RTMP就像一个用来装数据包的容器,这些数据可以是AMF格式的数据,也可以是FLV中的视/声频数据。

服务器流分发:流媒体服务器的作用是负责直播流的发布和转播分发功能。流媒体服务器有诸多选择,如商业版本的Wowza,以及开源的Nginx。Nginx是一款优秀的免费Web服务器,后面章节会详细介绍如何搭建Nginx服务器。

通用的视频直播模型

在这里插入图片描述
推流是指将直播内容推送到服务器的过程。
拉流是指服务器已有直播内容,用指定地址进行拉取的过程。

视频直播链路

直播链路涉及到的技术点很多,这是总体的框架图。
在这里插入图片描述
至此,结束~
在这里插入图片描述
望诸位不忘三连支持一下~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1527498.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

隐私计算实训营:联邦学习在垂直场景的开发实践

纵向联邦学习 纵向联邦学习的参与方拥有相同样本空间、不同特征空间的数据,通过共有样本数据进行安全联合建模,在金融、广告等领域拥有广泛的应用场景。和横向联邦学习相比,纵向联邦学习的参与方之间需要协同完成数据求交集、模型联合训练和…

Openharmony 下载到rk3568实现横屏

前言: Openharmony 源码版本4.1 release 板子:rk3568 1.修改“abilities”中的“orientation”实现横竖屏 entyr->src->module.json5文件里面添加 "orientation": "landscape", 2.修改系统源码属性实现横竖屏切换 通过这…

以太网--TCP/IP协议(二)

上文中讲述了IP协议,本文主要来讲一下TCP协议。 TCP协议 (1)端到端通信 直接把源主机应用程序产生的数据传输到目的主机使用这 些数据的应用程序中,就是端到端通信。 (2)传输层端口 公认端口&#xff0…

ansible--role

简介 roles是ansible,playbooks的目录的组织结构,将代码或文件进行模块化,成为roles的文件目录组织结构。 易读,代码可冲哟美好,层次清晰 目录机构 mkdir roles/nginx/{files,handlers,tasks,templates,vars} -ptou…

Google Play结算防掉单方案

我们公司的产品主要是出海产品,使用的是Google Play支付,但是在上线以后,经常有客诉,说支付以后,权益没有到账,于是对整个Google支付体系做了研究了一下。 我们的整个支付流程图大概如下: 其中后端参考的文档地址为: https://developers.google.com/android-publishe…

GB35114 USC安防平台 中星微国密摄像机配置 流程

中星微国密摄像机配置介绍 如下以中星微VS-IPC8021S-Y-T4摄像机为例,需要先各自获取p10文件,并通过证书签发机构或者测试SM2证书签发获取证书。 网络配置如下: 摄像机的IP地址为192.168.1.108,国标ID为34020000001320000015 系统的IP地址…

C#/.NET/.NET Core推荐学习路线文档文章

前言 专门为C#/.NET/.NET Core推荐学习路线&文档&文章提供的一个Issues,各位小伙伴可以把自己觉得不错的学习路线、文档、文章相关地址分享出来🤞。 https://github.com/YSGStudyHards/DotNetGuide/issues/10 🏷️C#/.NET/.NET Cor…

【LVI-SAM】激光雷达点云处理特征提取LIO-SAM 之FeatureExtraction实现细节

激光雷达点云处理特征提取LIO-SAM 之FeatureExtraction实现细节 1. 特征提取实现过程总结1.0 特征提取过程小结1.1 类 FeatureExtraction 的整体结构与作用1.2 详细特征提取的过程1. 平滑度计算(calculateSmoothness())2. 标记遮挡点(markOcc…

nvm及nodejs安装相关

安装 1.清空文件夹,卸载nvm及nodejs 2.下载安装包 https://github.com/coreybutler/nvm-windows/releases (也下载有) 3.安装nvm 地址写D:/nvm和D:/nodejs 4.安装nodejs nvm ls available //查询版本 nvm install 16.20.2 //安装对应版…

【H2O2|全栈】关于HTML(1)认识HTML

HTML相关知识 目录 前言 准备工作 WEB前端是什么? HTML是什么? 如何运行HTML文件? 标签 概念 分类 双标签和单标签 行内标签和块标签 HTML文档结构 预告和回顾 UI设计相关 Markdown | Md文档相关 项目合作管理相关 后话 前…

idea快捷键_idea 2024 复制光标所在行 或 复制选择内容,并把复制内容插入光标位置下面 (必备)

Ctrl G 在当前文件跳转到指定行处 Ctrl J 插入自定义动态代码模板 (必备) Ctrl P 方法参数提示显示 (必备) Ctrl Q 光标所在的变量 / 类名 / 方法名等上面(也可以在提示补充的时候按),显示文…

基于SpringBoot的校园跑腿系统+LW参考示例

系列文章目录 1.基于SSM的洗衣房管理系统原生微信小程序LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统LW参考示例 3.基于SpringBootVue的企业人事管理系统LW参考示例 4.基于SSM的高校实验室管理系统LW参考示例 5.基于SpringBoot的二手数码回收系统原生微信小程序LW参考示…

tabBar设置底部菜单以及选项iconfont图标

1.tabBar设置底部菜单 在官网里面可以了解到tabBar组件的一些知识和注意点: 需要给页面设置一个底部导航的话可以在pages.json里面设置一个tabBar标签,在其里面设置pagePath和text属性。 可以看的pagePath是跳转的地址,text是下面导航的文字…

DataLoader使用

文章目录 一、认识dataloader二、DataLoader整合数据集三、使用DataLoader展示图片方法四、去除结尾不满足batch_size设值图片的展示 一、认识dataloader DataLoader 用于封装数据集,并提供批量加载数据的迭代器。它支持自动打乱数据、多线程数据加载等功能。datas…

SpringDataJPA系列(7)Jackson注解在实体中应用

SpringDataJPA系列(7)Jackson注解在实体中应用 常用的Jackson注解 Springboot中默认集成的是Jackson,我们可以在jackson依赖包下看到Jackson有多个注解 一般常用的有下面这些: 一个实体的示例 测试方法如下: 按照上述图片中的序号做个简…

汽车网络安全的未来:将车辆视为端点

汽车行业面临着许多与其他行业的成功企业相同的网络安全风险和威胁,但它也在应对一些独特的风险和威胁。 Nuspire 的首席威胁分析师 Josh Smith(一家在汽车领域有着深厚根基并保护通用汽车和斯巴鲁等客户的托管安全服务提供商)谈到了当前的风…

多个路由器级联实现子网的方式

好久没写博客啦,最近搬家,换了网络环境,简单记录一下网络配置。 拓扑图就不画了,光猫 - > 华为TC7102路由 -> 华为AX2 Pro路由 -> 各种设备,简单表示就是这样。 原因是第一个路由是房东的,我希望自…

Lombok jar包引入和用法

大家好,今天分享一个在编写代码时的快捷方法。 当我们在封装实体类时,会使用set、get等一些方法。如下图,不但费事还影响代码的美观。 那么如何才能减少代码的冗余呢,首先lib中导入lombok的jar包并添加库。 此处我已导入&#xf…

【软件工程】软件开发模型

三、瀑布模型 四、几种软件开发模型的主要特点 题目 判断题 选择题 小结

linux中PATH变量-详细介绍(1)

配置完后可以通过echo $PATH查看配置结果。 生效方法:立即生效 有效期限:临时改变,只能在当前的终端窗口中有效,当前窗口关闭后就会恢复原有的path配置 用户局限:仅对当前用户 2.对用户生效 因为写入到 .bash_prof…