流媒体及直播相关知识

简介: 流媒体及直播相关知识

前言

本文主要讲解流媒体及其直播相关知识,所涉及的知识内容比较浅显,主要是做个简单的了解。


一、流媒体

1、基本概念

流媒体又叫流式媒体,它是指商家用一个视频传送服务器(比如:vlc)把节目(比如:xxxx.mp4)当成数据包发出,传送到网络上。用户通过解压设备对这些数据进行解压后,节目就会像发送前那样显示出来。


所谓流媒体是指采用流式传输的方式在 Internet 播放的媒体格式。如:音频、视频或多媒体文件。流式媒体在播放前并不下载整个文件,只将开始部分内容存入内存,流式媒体的数据流随时传送随时播放,只是在开始时有一些延迟。 流媒体实现的关键技术就是流式传输。实现了边下载边播放。


2、流式传输

传统的网络传输音视频等多媒体信息的方式是完全下载后再播放,下载常常要花数分钟甚至数小时。


而采用流媒体技术,就可实现流式传输,将声音、影像或动画由服务器向用户计算机进行连续、不间断传送,用户不必等到整个文件全部下载完毕,而只需经过几秒或十几秒的启动延时即可进行观看。当声音视频等在用户的机器上播放时,文件的剩余部分还会从服务器上继续下载。


网络协议: http、rtmp、rtsp、rtp/rtcp、udp、tcp


实现流式传输有两种方法:实时流式传输( Realtime streaming)和顺序流式传输(progressive streaming) 。


顺序流式传输:顺序下载,在下载文件的同时用户可观看在线媒体,在给定时刻,用户只能观看已下载的那部分, 而不能跳到还未下载的前头部分,顺序流式传输不象实时流式传输在传输期间根据用户连接的速度做调整。

Nginx,web 服务器;mp4 文件/flv/mov/mkv/ts/rmvb;http

实时流式传输:保证媒体信号带宽与网络连接配匹,使媒体可被实时观看到。

RTP/rtcp


0f99c3606d724ece88a6409b85fb2cd4.png

3、流媒体技术原理

流式传输的实现需要缓存。


在流式传输的实现方案中,一般采用 HTTP/TCP 来传输控制信息,而用 RTP/UDP 来传输实时声音数据。


通常高速缓存所需容量并不大(gop:ibbpbbpbbp…), 因为高速缓存使用环形链表结构来存储数据:通过丢弃已经播放的内容,流可以重新利用空出的高速缓存空间来缓存后续尚未播放的内容。


4、流媒体传输模式

流媒体之所以能够实现多媒体数据的实时播放是采用了专门的网络控制协议和数据传输机制。服务器端有专门的流媒体发布系统,而客户端则有专门的播放器,这两部分都需要通过数据缓存区进行数据的缓存。


5、H.264 流媒体传输系统框架

874b58f5188e4759a91ae77a8d9cfeab.png


二、直播

1、直播中使用的流媒体协议

RTMP,Real Time Messaging Protocol(实时消息传输协议) 的首字母缩写。 该协议基于

TCP,是一个协议族,包括 RTMP 基本协议及 RTMPT/RTMPS/RTMPE 等多种变种。RTMP 是一种设计用来进行实时数据通信的网络协议,主要用来在 Flash/AIR 平台和支持 RTMP 协议的流媒体/交互服务器之间进行音视频和数据通信。


RTMP 基于 flash 无法在 iOS 的浏览器里播放,但是实时性比 HLS 要好。


HLS,HTTP Live Streaming(HTTP 直播流技术),Apple 的动态码率自适应技术。主要用于 PC 和 Apple 终端的音视频服务。包括一个 m3u(8)的索引文件,TS 媒体分片文件和 key 加密串文件。


2、直播的模块划分

视频录制端:一般是电脑上的音视频输入设备或者手机端的摄像头或者麦克风,目前以移动端的手机视频为主。技术:webRTC(用途:H5 视频录制)

视频播放端:可以是电脑上的播放器,手机端的 Native 播放器,还有就是 H5 的 video 标签等,目前还是已手机端的 Native 播放器为主。技术:HLS 协议或 RTMP 协议(用途:视频播放)、ffmpeg(用途:使用 RTMP 协议时进行移动端视频解码)

视频服务器端:一般是一台 nginx/s rs / . . . 服务器, 用来接受视频录制端提供的视频源, 同时提供给视频播放端流服务。技术:RTMP 协议(用途:上传视频流) 、nginx rtmp-module 或 SRS(simple-rtmp-server)(用途:流服务器)


d04536d9ca2c40d5aed2d61f28d0c6c1.png

3、视频直播流程

视频直播的流程可以分为如下几步:

采集 -> 处理 -> 编码和封装 -> 推流到服务器 -> 服务器流分发 -> 播放器流播放

777c19d02255488e9f903b05e38495a3.png


①、推流到服务器

推送协议主要有三种:


RTSP(Real Time Streaming Protocol):实时流传送协议,是用来控制声音或影像的多媒体串流协议;

RTMP(Real Time Messaging Protocol):实时消息传送协议,是 Adobe 公司为 Flash 播放器和服务器之

间音频、视频和数据传输 开发的开放协议;

HLS(HTTP Live Streaming):是苹果公司实现的基于 HTTP 的流媒体传输协议;

RTMP 协议基于 TCP,是一种设计用来进行实时数据通信的网络协议,主要用来在 flash/AIR 平台和支持 RTMP

协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括 Adobe Media Server/Ultrant Media

Server/red5 等。


它有三种变种:


RTMP 工作在 TCP 之上的明文协议,使用端口 1935;

RTMPT 封装在 HTTP 请求之中,可穿越防火墙;

RTMPS 类似 RTMPT,但使用的是 HTTPS 连接;

RTMP 是目前主流的流媒体传输协议,广泛用于直播领域,可以说市面上绝大多数的直播产品都采用了这个协议。


②、服务器流分发

流媒体服务器的作用是负责直播流的发布和转播分发功能。


但我选择的是 Nginx,它是一款优秀的免费 Web 服务器,通过插件可以扩展直播功能。

Nginx,srs,crtmpserver,

Live555,darwin,

webrtc


目录
相关文章
|
编解码 Android开发 iOS开发
HLS直播协议详解
HLS直播协议详解
1770 2
|
存储 前端开发 Java
Python 教程之控制流(9)Python 中的 Switch Case(替换)
Python 教程之控制流(9)Python 中的 Switch Case(替换)
599 0
|
12月前
|
JSON API 网络架构
HTTP常见的请求方法、响应状态码、接口规范介绍
本文详细介绍了HTTP常见的请求方法、响应状态码和接口规范。通过理解和掌握这些内容,开发者可以更好地设计和实现W
1884 83
|
机器学习/深度学习 编解码 PyTorch
训练Sora模型,你可能需要这些(开源代码,模型,数据集及算力评估)
在之前的文章《复刻Sora有多难?一张图带你读懂Sora的技术路径》,《一文看Sora技术推演》我们总结了Sora模型上用到的一些核心技术和论文,今天这篇文章我们将整理和总结现有的一些开源代码、模型、数据集,以及初步训练的算力评估,希望可以帮助到国内的创业公司和个人开发者展开更深的研究。
|
编解码 流计算
直播推流的工作原理是什么
直播推流将视频和音频数据从设备实时传输到服务器并分发给观众,涉及采集、编码、推流、传输、拉流和显示六个关键步骤。首先通过摄像机或麦克风采集音视频,再利用编码器如OBS压缩数据,采用H.264等格式编码,接着通过RTMP等协议推流至服务器,服务器调整格式后通过HLS等协议分发给不同设备,观众即可实时观看。此流程确保了低延迟的全球内容传递。
|
监控 NoSQL MongoDB
【MongoDB 专栏】MongoDB 查询优化技巧
【5月更文挑战第10天】本文探讨了MongoDB查询优化技巧,包括合理使用索引、优化查询语句、数据模型简化、避免全表扫描、选择合适查询方法及监控性能。通过案例分析展示了优化策略及其效果,强调了持续优化对提升数据库性能和用户体验的重要性。掌握这些技巧能有效挖掘MongoDB的潜力。
622 2
【MongoDB 专栏】MongoDB 查询优化技巧
|
API
手机号段查询城市免费API接口教程
此接口用于根据手机号段查询相关信息,包括城市、运营商、区号等。支持POST和GET请求,需提供用户ID、KEY及手机号段前7位作为参数。返回数据包含状态码、信息提示及详细归属信息。示例请求地址:https://cn.apihz.cn/api/ip/haoduan.php?id=88888888&key=88888888&numbers=1321993。接口免费,建议使用个人ID与KEY以独享调用频次。
515 4
|
存储 编解码 算法
视频为什么可以被压缩?帧内压缩与帧间压缩有何区别?视频编码中的CBR、VBR、CRF...是什么?
视频压缩基于冗余,包括空间冗余、时间冗余、视觉冗余和编码冗余。帧内压缩利用空间相关性,帧间压缩利用时间相关性。视频编码中的码率控制方法有CBR(固定码率)、VBR(动态码率)、CRF(固定码率系数)、CQP(固定质量参数)、CVBR(约束可变码率)和ABR(平均码率),各有优缺点,适用于不同的场景。
|
JavaScript 前端开发 索引
探讨JavaScript中获取<select>元素选中情况的技术
探讨JavaScript中获取<select>元素选中情况的技术
1018 0
|
人工智能 自然语言处理 算法
极智AI | TensorRT API构建模型推理流程
大家好,我是极智视界,本文介绍一下 TensorRT API 构建模型推理流程。
1067 1