• 直播协议 python 常见直播协议


    1. 推流、直播 和 点播分别是什么意思?
    推流
    主播将本地视频源和音频源推送到云服务器,也被称为“RTMP发布”。
    直播
    即直接观看主播实时推送过来的音视频数据。
    点播
    视频源已经事先存储于云服务器之上的音视频文件,观众随时可以观看。
     

    目前常见的直播协议有三种:RTMP、 FLV 和 HLS。

    RTMP
    RTMP协议比较全能,既可以用来推送又可以用来直播,其核心理念是将大块的视频帧和音频帧“剁碎”,然后以小数据包的形式在互联网上进行传输,而且支持加密,因此隐私性相对比较理想,但拆包组包的过程比较复杂,所以在海量并发时也容易出现一些不可预期的稳定性问题。
     
    RTMP、RTSP、RTP和RTCP几者的概念:                                                                    1、RTMP(RealTime Messaging Protocol,实时消息传送协议)
    RTMP是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的开放协议。它有三种变种:
    1)、工作在TCP之上的明文协议,使用端口1935;
    2)、RTMPT封装在HTTP请求之中,可穿越防火墙;
    3)、RTMPS类似RTMPT,但使用的是HTTPS连接;
    RTMP协议是被Flash用于对象、视频、音频的传输。这个协议建立在TCP协议或者轮询HTTP协议之上。RTMP协议就像一个用来装数据包的容器,这些数据既可以是AMF格式的数据,也可以是FLV中的视音频数据。一个单一的连接可以通过不同的通道传输多路网络流,这些通道中的包都是按照固定大小的包传输的。
    2、RTSP(RealTime Streaming Protocol,实时流传输协议)
    RTSP定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP提供了一个可扩展框架,数据源可以包括实时数据与已有的存储的数据。该协议目的在于控制多个数据发送连接,为选择发送通道如UDP、组播UDP与TCP提供途径,并为选择基于RTP上发送机制提供方法。
    RTSP语法和运作跟HTTP/1.1类似,但并不特别强调时间同步,所以比较能容忍网络延迟。代理服务器的缓存功能也同样适用于RTSP,并且因为RTSP具有重新导向功能,可根据实际负载情况来切换提供服务的服务器,以避免过大的负载集中于同一服务器而造成延迟。
    3、RTP(Real-timeTransport Protocol,实时传输协议)
    RTP是针对多媒体数据流的一种传输层协议,详细说明了在互联网上传递音频和视频的标准数据包格式。RTP协议常用于流媒体系统(配合RTCP协议),视频会议和一键通系统(配合H.323或SIP),使它成为IP电话产业的技术基础。
    RTP是建立在UDP协议上的,常与RTCP一起使用,其本身并没有提供按时发送机制或其它服务质量(QoS)保证,它依赖于低层服务去实现这一过程。
    RTP 并不保证传送或防止无序传送,也不确定底层网络的可靠性,只管发送,不管传输是否丢包,也不管接收方是否有收到包。RTP 实行有序传送,RTP中的序列号允许接收方重组发送方的包序列,同时序列号也能用于决定适当的包位置,如在视频解码中,就不需要顺序解码。
    4、RTCP(Real-timeTransport Control Protocol,实时传输控制协议)
    RTCP是RTP的配套协议,为RTP媒体流提供信道外的控制。RTCP和RTP一起协作将多媒体数据打包和发送,定期在多媒体流会话参与者之间传输控制数据。
    RTCP的主要功能是为RTP所提供的服务质量(QoS)提供反馈,收集相关媒体连接的统计信息,例如传输字节数,传输分组数,丢失分组数,单向和双向网络延迟等等。网络应用程序可以利用RTCP所提供的信息来提高服务质量,比如限制流量或改用压缩比小的编解码器。
     
    FLV
    FLV协议由Adobe公司主推,格式极其简单,只是在大块的视频帧和音视频头部加入一些标记头信息,由于这种极致的简洁,在延迟表现和大规模并发方面都很成熟。唯一的不足就是在手机浏览器上的支持非常有限,但是用作手机端APP直播协议却异常合适。
    HLS
    苹果推出的解决方案,将视频分成5-10秒的视频小分片,然后用m3u8索引表进行管理,由于客户端下载到的视频都是5-10秒的完整数据,故视频的流畅性很好,但也同样引入了很大的延迟(HLS的一般延迟在10-30s左右)。相比于FLV, HLS在iPhone和大部分android手机浏览器上的支持非常给力,所以常用于QQ和微信朋友圈的URL分享。


    目前常见的点播格式有三种:MP4、HLS和FLV。

    MP4
    非常经典的文件格式,在移动终端和PC浏览器上的支持度都很好(在IOS和大部分Android设备上,都可以使用系统浏览器进行播放,在PC上可以使用FLASH控件进行播放)。但是MP4的视频文件格式比较复杂,所以处理成本高,而且由于索引表复杂度高,导致时长稍大(比如半小时)的MP4文件在线播放时加载速度会很慢。
    HLS
    苹果公司力推的标准,在移动终端的浏览器上的支持度较好,但IE的支持情况依赖FLASH的二次开发工作(建议使用腾讯视频云的FLASH播放器控件)。其精简的m3u8的索引结构可以规避MP4的索引慢问题,如果是用于点播,是非常不错的选择。
    FLV
    Adobe公司所推的标准,目前直播平台最常用的封装格式,在PC端有FLASH的强力支持,但在移动终端只有APP实现播放器才有可能支持(或者使用本播放器),大部分手机端浏览器均不支持。目前腾讯视频云的直播录制,采用的就是FLV视频格式。


    虽然RTMP在直播领域不是特别流行,但是在推流服务,也就是主播->服务器这个方向上,RTMP则居于主导地位,目前国内的视频云服务都是以RTMP为主要推流协议。由于SDK第一个功能模块就是主播推流,所以也被称为是RTMP SDK。

    一般直播SDK支持推流、直播和点播三个功能:

    推流支持RTMP发布协议,并包含硬件加速,美颜滤镜,带宽适应,清晰度调整等强大功能。
    直播支持FLV协议和RTMP协议,推荐使用FLV,具有秒开优化,延迟自动控制技术以及适应性良好的硬件解码能力。
    点播支持MP4\HLS\FLV文件在线点播服务。

  • 相关阅读:
    RocketMQ源码分析(十三)之ConsumeQueue
    知识图谱问答研究进展
    MQTT云台如何助力分布式农村污水处理的远程管理
    如何搭建android源代码repo仓库
    CTF之CTF(夺旗赛)介绍
    端到端自动驾驶系列(一):自动驾驶综述解析
    Java项目:ssm房屋租赁管理系统
    达梦数据库使用IPV6连接
    别人熬夜看世界杯 我熬夜改代码 你满意了
    编程机器人的参数表怎么看
  • 原文地址:https://blog.csdn.net/jmm18363027827/article/details/133468647