本文主要是介绍流媒体与直播的基础理论(其一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
欢迎诸位来阅读在下的博文~
在这里,在下会不定期发表一些浅薄的知识和经验,望诸位能与在下多多交流,共同努力
文章目录
- 一、流媒体简介
- 二、流媒体协议
- 常见的流媒体协议
- 三、视频直播原理与流程
- 通用的视频直播模型
- 视频直播链路
一、流媒体简介
- 流媒体是指将一连串的媒体数据压缩后,经过网上分段发送数据,在网上及时传输影音以供观赏的一种技术与过程,此技术使数据得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件。
- 完整的流媒体平台包括:前端摄像头、流媒体服务器、磁盘阵列、视频综合管理、电视墙、客户端等。
- 流媒体最主要的技术特征是流式传输,它使数据像流水一样传输。实现流式传输主要有两种方式:顺序流式传输 和 实时流式传输。
01 顺序流式传输是指顺序下载,用户在观看在线媒体的同时下载文件,在这一过程中,用户只能观看已下载完的部分,而不能直接观看未下载完的部分。由于标准的HTTP服务器就可以完成这种工作,所以也被称为HTTP流式传输。
优点:由于流式传输能够较好地保证节目播放的质量,因此比较适合在网站上发布的、可供用户点播的、高质量的视频。顺序流式文件存放在标准HTTP或FTP服务器上,易于管理,基本上与防火墙无关。
缺点:顺序流式传输不支持现场广播,也不适合长片段和有随机访问要求的视频。
02 实时流式传输必须保证匹配连接带宽,使媒体可以被实时观看到。在观看过程中用户可以任意观看媒体前面或者后面的内容。实时流式传输需要特定服务器,如 Quick Time Streaming Server、Realserver、Windows Media Server、SRS、ZLMediaKit等。这些服务器允许对媒体发送进行更多级别的控制,因而系统设置、管理比标准的HTTP服务器更复杂。实时流式传输还需要特殊网络协议,如实时流协议(RTSP)或 微软媒体服务。
优点:实时流式传输意味着数据在发送和接收之间几乎没有延迟,用户可以立即体验内容,非常适合现场事件。
缺点:不稳定的网络连接可能导致缓冲和延迟,需要自适应流技术来调整流的质量。此外,还要考虑防火墙的问题。
二、流媒体协议
- 常见的流媒体协议是基于数据应用层的协议(UDP,UDP除外,因为UDP是传输层的协议,也是流媒体中常用的协议)
常见的流媒体协议
流媒体协议是用于传输音频和视频数据的标准化方法,确保数据在网络上实时传输的有效性和可靠性。以下是一些常见的流媒体协议:
- RTMP (Real-Time Messaging Protocol)
- 用途:用于音频、视频和数据在互联网上的实时传输。
- 特点:支持低延迟流媒体传输,常用于直播应用。最初由Adobe开发,用于Flash播放器。协议延迟非常低,但由于需要flash插件,不建议使用该协议,但流提取是例外。
- 总结:一个老的协议,正在淘汰中。
- HLS (HTTP Live Streaming)
- 用途:由Apple开发,支持在HTTP上进行流媒体传输。
- 特点:将媒体内容切分成小片段,客户端可以动态选择合适的质量,适应网络条件。
- 总结:使用最广泛的协议之一。
- MPEG-DASH
- 用途:一种自适应流媒体传输技术,可以根据网络条件动态调整视频质量。支持绝大多数编解码器,支持加密媒体扩展和媒体扩展源。
- 特点:支持多种编码格式,灵活性高,也使用类似HLS的分片技术。
- 总结:属于当代最新的协议之一,但是未被广泛使用,有发展潜力。
- RTSP (Real-Time Streaming Protocol)
- 用途:用于控制流媒体服务器,支持点播和实时流。
- 特点:类似于HTTP,允许客户端发送播放、暂停、停止等控制命令。常与RTP(Real-Time Transport Protocol)一起使用,以传输音频和视频数据。
- 总结:在IP摄像头和网络视频监控中广泛使用,但在一般流媒体应用中逐渐被其他协议取代。
- SRT (Secure Reliable Transport)
- 用途:用于低延迟和高安全性的视频传输。
- 特点:设计用于在不稳定的网络环境中提供可靠的流媒体传输,支持加密和纠错机制。
- 总结:适合直播和远程制作,越来越受到关注并逐渐被采纳。
- 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服务器。
通用的视频直播模型
推流是指将直播内容推送到服务器的过程。
拉流是指服务器已有直播内容,用指定地址进行拉取的过程。
视频直播链路
直播链路涉及到的技术点很多,这是总体的框架图。
至此,结束~
望诸位不忘三连支持一下~
这篇关于流媒体与直播的基础理论(其一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!