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

news2024/12/27 11:17:34

在这里插入图片描述

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

文章目录

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

一、流媒体简介

  • 流媒体是指将一连串的媒体数据压缩后,经过网上分段发送数据,在网上及时传输影音以供观赏的一种技术与过程,此技术使数据得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件。
  • 完整的流媒体平台包括:前端摄像头、流媒体服务器、磁盘阵列、视频综合管理、电视墙、客户端等。
    在这里插入图片描述
  • 流媒体最主要的技术特征是流式传输,它使数据像流水一样传输。实现流式传输主要有两种方式:顺序流式传输 和 实时流式传输。
    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.coloradmin.cn/o/2114957.html

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

相关文章

学习记录:js算法(二十七):重排链表、删除链表的倒数第 N 个结点

文章目录 重排链表我的思路网上思路 删除链表的倒数第 N 个结点我的思路网上思路 总结 重排链表 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → Ln - 1 → L2 …

oracle数据库安装和配置

​ 大家好,我是程序员小羊! 前言: Oracle 数据库的安装和配置是一个较为复杂的过程,涉及多个步骤和配置项。以下将详细介绍如何在 Linux 和 Windows 系统中安装 Oracle 数据库并进行基础配置。 一、Oracle 数据库安装前的准备 …

结账打印--SAAS本地化及未来之窗行业应用跨平台架构

一代码 var 打印数据 {shopname:"广发系统"};var 打印渲染2 打印模板.解析(打印模板,打印数据x,"wlzc");console.log("未来之城");console.log(打印渲染2);var 对话框_打印_id "多大啥事";var 对话框_打印_内容 未来之窗_打印数据渲…

ICM20948 DMP代码详解(6)

接前一篇文章:ICM20948 DMP代码详解(5) 前一篇文章解析了EMP-App中的入口函数main()中重点关注的第1段代码,本回继续往下进行解析。为了便于理解和回顾,再次贴出main函数源码: int main (void) {int rc 0…

一次关于生产环境服务无故宕机的排查过程

故事的开始 这个故事是在一年之前,当时我们的系统运行在客户的k8s环境上。然后很神奇的是每个月底我们都会服务宕机,当然我们开启了多个实例。当时的容器线条就像心跳图一样(或许有些描述的不太准确,我没有找到当时那个像心电图一…

【Map】、集合总结

Map(*)——映射 比较之前的集合 List 为什么使用map <k,v>&#xff1a;key–value Api–>尽量用k去操作value put<k,v> package com.ffyc.map;import java.util.HashMap; import java.util.Map;/*** 映射*/ public class MapDemo {public static void main(St…

Linux下的Makefile与进度条程序

目录 Linux下的Makefile与进度条程序 Makefile与make Makefile与make介绍 创建第一个Makefile并使用make Makefile文件基本格式介绍 Makefile依赖方法执行过程 Makefile通用写法 进度条程序 实现效果 前置知识 回车(\r)与换行(\n) 输出缓冲区 实现进度条 Linux下的…

vue+ThreeJS:从0 到1 搭建开发环境

文章目录 一、下载安装&#xff08;懒人版&#xff09;二、顺序安装1&#xff0c;下载安装nodejs2&#xff0c;安装vue-cli3&#xff0c;创建vue-three 项目。4&#xff0c;安装threeJS5&#xff0c;安装element UI &#xff08;选装&#xff09;最终package.json文件如下&…

C语言深入理解指针3

1.字符指针变量 在指针类型中char*是字符指针 int main() {char ch w;char* pc &ch;//pc是字符指针变量//字符指针变量是用来存放地址的const char* p "abcsefghi";// 不是将abcdefghi\0存放到p中// 而是将首字符a的地址存放在p中// "abcsefghi"是…

逻辑代数的基本规则

目录 逻辑代数的基本规则 带入规则 反演规则 对偶规则 逻辑代数的基本规则 带入规则 将逻辑等式两边的某一变量均用同一个逻辑函数代替&#xff0c;等式仍然成立。 可以用A非代替A&#xff0c;也可以用C代替B。 也可使用BC这样一个整体代替B。 反演规则 可以把与换或&#x…

营养作用的对象是有区别的 第八篇

除了7大营养素 还需要补充其他营养素 食品营养学 临床营养学 大众营养学 食品营养学 你要早点就开始预防

怎么强制撤销excel工作表保护?

经常不是用的Excel文件设置了工作表保护&#xff0c;偶尔打开文件的时候想要编辑文件&#xff0c;但是发现忘记了密码&#xff0c;那么这种情况&#xff0c;我们怎么强制撤销excel工作表保护&#xff1f;今天分享两种解决方法。 方法一、 将excel文件转换为其他文件格式&…

C语言进阶【1】--字符函数和字符串函数【1】

本章概述 字符分类函数字符转换函数strlen的使用和模拟实现strcpy的使用和模拟实现strcat的使用和模拟实现strcmp的使用和模拟实现彩蛋时刻&#xff01;&#xff01;&#xff01; 字符分类函数 字符&#xff1a; 这个概念&#xff0c;我们在以前的文章中讲过了。我们键盘输入的…

通信工程学习:什么是MPC多媒体个人计算机、MCS多媒体计算机系统

一、MPC多媒体个人计算机&#xff08;Multimedia Personal Computer&#xff09; 1、MPC多媒体个人计算机定义 多媒体个人计算机&#xff08;MPC&#xff09;是指具备处理多媒体信息&#xff08;如音频、视频、图像、动画和文本等&#xff09;能力的个人计算机。它不仅具备传统…

html记账本改写:保存数据 localStorage。

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>记账本改写</title><style>table {user-select: none;/* width: 100%; */border-collapse: collapse;}table,th,td {border: 1px solid…

数据集 3DPW-开源户外三维人体建模-姿态估计-人体关键点-人体mesh建模 >> DataBall

3DPW 3DPW-开源户外三维人体建模数据集-姿态估计-人体关键点-人体mesh建模 开源户外三维人体数据集 inproceedings{vonMarcard2018, title {Recovering Accurate 3D Human Pose in The Wild Using IMUs and a Moving Camera}, author {von Marcard, Timo and Henschel, Robe…

从“游戏科学”到玄机科技:《黑神话:悟空》的视角打开动漫宇宙

近日&#xff0c;中国游戏界迎来了一场前所未有的盛事——由游戏科学公司开发的《黑神话&#xff1a;悟空》正式上线&#xff0c;并迅速成为全球玩家热议的焦点。在居高不下的讨论热度中&#xff0c;有人说他的成功在于对《西游记》为背景进行改编&#xff0c;对原著进行了分析…

读软件设计的要素04概念的关系

1. 概念的关系 1.1. 概念是独立的&#xff0c;彼此间无须相互依赖 1.1.1. 一个概念是应该独立地被理解、设计和实现的 1.1.2. 独立性是概念的简单性和可重用性的关键 1.2. 软件存在依赖性 1.2.1. 不是说一个概念需要依赖另一个概念才能正确运行 1.2.2. 只有当一个概念存在…

1 模拟——67. 二进制求和

1 模拟 67. 二进制求和 给你两个二进制字符串 a 和 b &#xff0c;以二进制字符串的形式返回它们的和。 示例 1&#xff1a; 输入:a "11", b "1" 输出&#xff1a;"100" 示例 2&#xff1a; 输入&#xff1a;a "1010", b "…

单GPU一分钟生成16K高清图像!新加坡国立发布LinFusion:无缝兼容Stable Diffusion插件

论文链接&#xff1a;https://arxiv.org/pdf/2409.02097 Git链接&#xff1a;https://lv-linfusion.github.io/ 亮点直击 本文研究了Mamba的非因果和归一化感知版本&#xff0c;并提出了一种新颖的线性注意力机制&#xff0c;解决了扩散模型在高分辨率视觉生成中的挑战。 本文…