FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世此生 ...

打印 上一主题 下一主题

主题 538|帖子 538|积分 1614

​自从互联网普及之后,用于视频直播的流媒体技术就发展起来。这几十年中,比力有影响的主要有MMS、RTSP、RTMP、HLS、SRT、RIST几种,分别先容如下。1、MMS协议

MMS全称Microsoft Multimedia Server,意思是微软多媒体服务器,它是微软公司在上世纪九十年代发布的多媒体服务器办理方案,可用于传输微软音视频格式的流媒体直播数据。
MMS协议的直播地点形如mms://***,可通过MMS传输的视频格式为WMV,音频格式为WMA,音视频数据封装之后的文件格式为ASF。
MMS协议内部又分为MMSU和MMST,此中MMSU表示MMS协议结合UDP数据传送。如果MMSU连接失败,服务器会尝试使用MMST,这个MMST表示MMS协议结合TCP数据传送。
因为MMS协议由微软公司提出,不兼容其他格式的音视频数据流,以是随着WMV/WMA标准的式微,MMS协议也渐渐无人问津了。
2、RTSP协议

RTSP全称Real Time Streaming Protocol,意思是实时传播输协议,它是网景公司和RealNetworks公司在上世纪九十年代联合提出的多媒体实时传输协议。
RTSP协议的直播地点形如rtsp://***,早期可通过RTSP传输的视频格式为RM,音频格式为RA,音视频数据封装之后的文件格式为RM或RMVB。后来RTSP协议增长支持MPEG的音视频标准,即支持传输视频格式H.264,音频格式AAC。
RTSP协议的安全版本是RTSPS,也就是给RTSP协议增长了TLS/SSL支持。RTSPS使用了TLS/SSL协议来加密和保护数据传输,以防止数据在传输过程中被窃听和窜改。
因为RTSP提出较早,对服务端的复杂度要求比力高,以至流媒体服务器SRS干脆放弃支持RTSP协议,直播录制软件OBS Studio也没支持该协议。在流媒体服务器中,EasyDarwin、MediaMTX、ZLMediaKit支持RTSP协议。手机直播软件则有RTMP Streamer支持RTSP协议。
3、RTMP协议

RTMP全称Real Time Messaging Protocol,意思是实时消息传输协议,它是Adobe公司在零零年代提出的流媒体数据传输协议。
RTMP协议的直播地点形如rtmp://***,可通过RTMP传输的视频格式为H.264,音频格式为MP3大概AAC,音视频数据封装之后的文件格式为FLV或F4V。
RTMP协议的安全版本是RTMPS,也就是给RTMP协议增长了TLS/SSL支持。RTMPS接纳安全套接字层 (SSL) 和传输层安全性 (TLS) 两种加密协议,使数据传输更加安全。
RTMP提出时间较早,末了一次更新时间在2012年,以至于未能支持HEVC和AV1等后期的音视频编码标准。又因为FLV格式没落已久,以至HTML5规范干脆移除了Flash插件,导致如今欣赏器都不支持rtmp链接,连FFmpeg也迟至6.1版才给rtmp协议支持hevc格式。
不外好在RTMP的稳固性高,服务端的实现相对容易,并且之前的移动互联网爆发迅速,新的流媒体协议未能及时推出,使得RTMP协议被大量应用于网络直播领域。
在流媒体服务器中,MediaMTX、ZLMediaKit、SRS都支持RTMP协议。在直播软件中,电脑端的OBS Studio支持RTMP协议,手机端的RTMP Streamer和SRT Streamer都支持RTMP协议。
通过RTMP协议实现直播功能的说明拜见之前的文章《利用RTMP协议构建电脑与手机的直播Demo》和《使用RTMP Streamer开启APP直播推流》。
4、HLS协议

HLS全称HTTP Live Streaming,意思是基于HTTP的流媒体传输协议,它是苹果公司于2009年提出的一种由于传输音视频的协议交互方式。
HLS接纳HTTP协议传输音视频数据,访问地点形如“http://***.m3u8”。HLS协议通过将音视频流切割成TS切片及生成m3u8的播放列表文件,并通知客户端通过HTTP协议下载播放列表文件,按照列表文件中的顺序下载切片文件并播放,从而实现边下载边播放,类似于实时在线播放的结果。
由于HLS在传输层只接纳HTTP协议,因此它具备HTTP协议的网络优势,好比很方便透过防火墙大概代理服务器,可简朴的实现媒体流的负载均衡。因为HLS协议把视频流分片传输,使得在直播时延时较大,以是HLS更多用于视频点播领域。
关于HLS协议的更多说明拜见之前的文章《分析SRS对HLS协议里TS包的插帧操作》和《解析H.264码流中的SPS帧和PPS帧》。
5、SRT协议

SRT全称Secure Reliable Transport,意思是安全可靠传输协议,它由由Haivision 和 Wowza共同创建的SRT联盟提出。
SRT协议协议的直播地点形如srt://***,它引入了AES加密算法,无需像RTSP和RTMP那样引入专门的SSL证书。作为较新的流媒体协议,SRT支持更多的音视频封装格式。只是该协议的支持库libsrt在2017年才开源,因此未能在移动互联网时代大量铺开,现在主要应用于大型电视直播领域。
FFmpeg从4.0开始支持集成第三方的libsrt库。在流媒体服务器中,MediaMTX、ZLMediaKit、SRS都支持SRT协议。在直播软件中,电脑端的OBS Studio从在25.0开始支持SRT协议,手机端的和SRT Streamer支持SRT协议,而RTMP Streamer不支持SRT协议,只有其升级版才支持SRT协议。
通过SRT协议实现直播功能的说明拜见之前的文章《利用SRT协议构建手机APP的直播Demo》和《使用SRT Streamer开启APP直播推流》。
6、RIST协议

RTST全称Reliable Internet Stream Transport,意思是可信赖的互联网流媒体协议,它由2017年成立的RIST工作组提出。
RIST是一个在传输层使用UDP协议,并在应用层提供可靠性和流控制功能的传播输协议。它并不是一个纯粹的应用层协议,而是在传输层和应用层之间操作的协议。RIST和SRT具有相同的加密级别,都支持大容量流媒体和前向纠错功能。
RIST协议的制定时间比SRT还晚,固然晚制定会多考虑新功能,好比RIST支持点到多点广播,而SRT不支持;但是晚制定拖累了各开源软件对RIST的支持力度,好比OBS Studio早在25.0开始支持SRT,迟至27.0才开始支持RIST,另一个直播录制软件RootEncoder已支持SRT尚未支持RIST,流媒体服务器MediaMTX已支持SRT尚未支持RIST。
FFmpeg从4.4开始支持集成第三方的librist库。在流媒体服务器中,MediaMTX、ZLMediaKit、SRS都不支持RIST协议。在直播软件中,电脑端的OBS Studio从在27.0开始支持SRT协议,手机端尚未有开源软件支持RIST协议。
总的来说,现在国内占据主要市场份额的直播协议还是RTMP,不外拥有更好性能的SRT协议正在逐步迎头赶上,好比腾讯视频云、京东视频云等等就引入了SRT协议。有关直播系统的搭建说明拜见之前的文章《从0开始搭建直播系统的开源软件架构》。
更多具体的FFmpeg开发知识拜见《FFmpeg开发实战:从零根本到短视频上线》一书。
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

石小疯

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表