zoukankan      html  css  js  c++  java
  • 如何根据直播场景选择合适的直播协议?

    视频直播被运用到了生活的方方面面,手机直播和PC直播是大家获取直播的主要方式。但是对于直播搭建的人员,要十分清楚不同协议有哪些区别,可以运用于哪些直播场景。

    国内主流的直播协议分为三种,分别是RTSP、RTMP、HTTP-FLV。目前对于TSINGSEE青犀视频云边端架构平台EasyNVR、EasyGBS、EasyCVR、EasyDSS来说,已经是实现了这几种协议视频流的输出,其中EasyGBS还支持了近几年火热的webrtc协议输出。不管是选取哪一套视频直播系统,都需要根据不同场景来选择不同的直播协议。

    从网络上接收视频和形成直播有一套复杂的流程,这套流程基本就是根据协议来进行的,首先要解协议(RTSP/RTMP/HTTP),然后是解格式(MKV,RMVB),之后才是将视频(H264)和音频(AAC)格式数据分别解码为图像(RGB/YUV)和声音(PCM),再根据时间戳同步播放。这其中就要知道协议的传输区别及特性,才能在项目中更好的运用。

    这里先亮一下RTSP、RTMP、HTTP-FLV三种协议的特性:

    • RTSP主要用于IPTV,原因是传输数据使用的是UDP,在网络环境比较稳定的情况下,传输效率是比较高的;
    • RTMP主要用于互联网音视频传输,是实时播放,它使用的是TCP传输,因为互联网环境相对较差,采用RTMP保证了视频的传输质量,但是其传输延迟相对较高,传输效率相对较低;
    • HTTP-FLV是播放本地的视频,并不是播放服务器的视频,优点就是服务器消耗低,而缺点就是FLV会缓存在客户端,对FLV的保密性不好。

    因为互联网网络环境具有不稳定性,因此互联网视频服务通常采用TCP作为其流媒体的传输层协议,因而像RTMP,HTTP这类的协议就能够被广泛用于互联网视音频服务之中。RTMP格式目前在国内使用比较多,国内CDN厂商也多支持RTMP协议。HTTP FLV使用类似RTMP流式协议的HTTP长连接,需由特定流媒体服务器分发的,兼顾两者的优点。

    librtmp是RTMP协议的实现,可以使用librtmp来实现协议的解析和数据的收发。比如我们开发的EasyDSS直播服务器就是基于nginx+rtmp实现;直播客户端方面采用librtmp负责推流,FFmpeg负责编码。

    此处再给大家扩展一下视频压缩的内容。一般视频压缩分为有损压缩和无损压缩,根据字义,有损压缩会借助于人眼的部分特性,丢弃一些特定的数据,因此最后输出效果可能不会达到原始视频的效果,而TSINGSEE青犀视频云边端架构的流媒体平台输出的视频效果均是处于优质的范畴,大家大可亲自测试。

  • 相关阅读:
    java内部类
    unityUI拖拽
    Java泛型
    java集合
    python爬取糗百段子
    python读取文件并保存到mysql数据库
    BeanShell Sampler 身份证号-jmeter
    python操作数据库
    创建身份证号
    随机生成四要素
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/15007365.html
Copyright © 2011-2022 走看看