流媒体 协议

宦博雅
2023-12-01
1,rtp
实时传输协议,用于 传输流媒体数据,基于udp.
2,rtsp
实时流媒体协议,用于 发起流媒体会话,交互信息,基于tcp.
3,http
通过http进行流化视频有很多种方法.
具体有http渐进式下载,
HLS:http live streaming,
HTML5.
具体不同的平台,不同的播放器,浏览器,这个都可能有些小区别.

国内最为常见是flash+http渐进下载.
adobe最近推出的HTTP dynamic streaming是后续版本.
对于iOS,则使用苹果的HLS(http live streaming)支持.
HDS与HLS,
很大程度上比较相似,都是通过软件将视频文件分割,
然后通过索引文件,进行访问.
这样的方式,减少了下载块的大小,同时可以动态更新索引文件,可以支持伪直播.
例如:HLS,就是分割为h264+aac编码的ts文件,通过m3u8文件索引.客户端通过m3u8文件就可以访问视频内容.
相比之下,HTML5是最为简单的方式,
不需要flash,
不需要特定软件支持,
但是对浏览器要求较高,
而且不同的浏览器对具体的视频容器格式与编码格式不完全一致,
这个还有待进一步发展.

pptv之类的,还会用到p2p的方式,就是用户下载的视频,还有可能用于上传.
 
 
 
我们熟知的流媒体协议有RTMP,RTSP,HLS。

先谈一下HLS,这个协议接触得最早,自己的个人理解,
如果要开发一套准实时的手机音视频直播系统,需要支持iphone,android,windows phone等多款手机,这个协议真心不错。
为什么是准实时呢,因为客户端播放的是最新切割的ts文件,它的延迟取决于切片的大小。

 

1、采集视频源和音频源的数据

2、对原始数据进行H264编码和AAC编码

3、视频和音频数据封装为MPEG-TS包

4、HLS分段生成策略及m3u8索引文件

5、HTTP传输协议

这里面的很多步骤需要用到ffmpeg编解码库,比如编码, 切片等。
方便之处是可以使用普通的http服务器就ok了,推荐使用nginx,
这是一款功能无比强大的web服务器,其反向代理,性能好的不可言喻。

            

 RTSP协议,这应该是实时性最好的了,如果要想实时性要求很高,比如0.5s以内,这个是不错的选择。

 类似资料: