博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【视频】视频传输协议:RTSP、RTP、RTCP、RTMP、HTTP
阅读量:4262 次
发布时间:2019-05-26

本文共 1088 字,大约阅读时间需要 3 分钟。

一、RTSP、RTP、RTCP

RTSP、RTP、RTCP是一组协议,其中RTSP在应用层、RTP和RTCP在传输层。RTP用于传输流媒体数据,而RTCP对RTP进行控制、同步。

二、RTSP、RTMP、HTTP

1、共同点

RTSP、RTMP、HTTP都是用在应用层。理论上这三种协议都可以做直播和点播,但直播一般用RTSP和RTMP,点播用HTTP。

2、不同点

HTTP将数据作为文件处理,所以HTTP不是流媒体协议,RTMP和RTSP是流媒体协议。

RTMP是Adobe的私有协议,未完全公开,RTSP和HTTP是共有协议。
RTMP一般传输flv,f4v格式流,RTSP传输ts,MP4格式流,HTTP没有特定的流。
RTSP一般需要2-3个通道,数据和命令通道分开,RTMP和HTTP在一个通道上传输命令和数据。

三、直播传输流程和实现

参考博客:https://www.cnblogs.com/stnlcd/p/7202155.html

  从网络上接收视频时首先要解协议(RTSP/RTMP/HTTP),然后是解格式(MKV,RMVB),之后才是将视频(H264)和音频(AAC)格式数据分别解码为图像(RGB/YUV)和声音(PCM),再根据时间戳同步播放。

RTSP+RTP主要用于IPTV,原因是传输数据使用的是UDP,在网络环境比较稳定的情况下,传输效率是比较高的;

RTMP主要用于互联网音视频传输,它使用的是TCP传输,因为互联网环境相对较差,采用RTMP保证了视频的传输质量,但是其传输延迟相对较高,传输效率相对较低。

使用RTMP技术的流媒体系统有一个非常明显的特点:使用 Flash Player 作为播放器客户端,而Flash Player 现在已经安装在了全世界将近99%的PC上,因此一般情况下收看RTMP流媒体系统的视音频是不需要安装插件的。用户只需要打开网页,就可以直接收看流媒体,十分方便。直播服务普遍采用了RTMP作为流媒体协议,FLV作为封装格式,H.264作为视频编码格式,AAC作为音频编码格式。FLV是RTMP使用的封装格式,H.264是当今实际应用中编码效率最高的视频编码标准,AAC则是当今实际应用中编码效率最高的音频编码标准。

librtmp是RTMP协议的实现,可以使用librtmp来实现协议的解析和数据的收发。直播服务器可以基于nginx+rtmp实现;直播客户端方面采用librtmp负责推流,FFmpeg负责编码;收看客户端采用VLC即可,因为VLC本身既可以解析RTMP流,又可以解析编码后的视频数据。

你可能感兴趣的文章
maven 项目(四) spring集成springMVC开发统一接入API(准备工作:第二部分)
查看>>
来段代码提提神-Java读取config.properties文件中的key=value
查看>>
来段代码提提神-Java实现SocketServer和client链接
查看>>
Java调用数据库备份命令mysqldump
查看>>
项目经验分享--favicon.ico标签栏如何设置
查看>>
项目经验分享--今天公司网站打不开了!数据库:ERROR 1030 (HY000): Got error 28 from storage engine
查看>>
maven 项目(五) spring集成springMVC开发统一接入API--实现test接口
查看>>
项目经验分享--SecureCRT后台启动易宝支付CFCA签名服务
查看>>
HTTP请求错误大全
查看>>
使用百度地图API 逆地址解析
查看>>
mysql简单存储过程范例
查看>>
mysql简单存储过程范例之遍历数据库生成视图
查看>>
js 实现banner轮播
查看>>
Java实现地址解析为经纬度
查看>>
Java基础---@XmlRootElement 注解对象
查看>>
MyBatis的传入参数parameterType类型
查看>>
MyBatis的返回参数类型
查看>>
Spring多例模式 注解@Scope("prototype")和xml配置scope="prototype"
查看>>
APP登录----伪sessionId设计登录
查看>>
从hashcode()和equals()来对hashset对象去重做设计
查看>>