分享

网络视频开发?你需要了解这些知识

 北欧模式 2022-10-26 发布于陕西

随着网络带宽的日益扩大,基于网络的视频流越来越成为很多应用内置的功能。因此,对于视频相关开发的技术需求也越来越多。因此,对于很多程序员来说,掌握一些基础的视频流开发知识,就成为了解决很多问题的关键。但是视频开发相关的知识很多,一些开发人员,尤其是中途转行的技术人员,不知道如何开始,因此,本文就为大家介绍一些视频开发的基础知识,从而让大家少走些弯路。

在国内,视频开发所需要了解的基础知识,总结起来,可以归纳为:一标准五协议二类库。下面我们就分别看看他们都指什么。

一、标准

一标准指得是是国家标准GB/T 281812016《公共安全视频监控联网系统信息传输、交换、控制技术要求》,该标准规定了公共安全视频监控联网系统的互联结构, 传输、交换、控制的基本要求和安全性要求,以及控制、传输流程和协议接口等技术要求,是视频监控领域的国家标准。

GB28181协议信令层面使用的是SIPSession Initiation Protocol)协议,流媒体传输层面使用的是实时传输协议(Real-time Transport ProtocolRTP)协议。

GB28181可以理解为在国际通用标准的基础之上进行了私有化定制以满足视频监控联网系统互联传输的标准化需求。它的协议会话通道实际上使用的是SIP协议,并且在SIP协议的基础之上做了些私有化处理。

GB28181标准中具体通信协议结构图如下图所示:

二、协议

五协议指得是SIP、RTP、RTCP、RTSP和RTMP。

1、SIP

SIP(Session initialization Protocol,会话初始协议)是一个由IETF MMUSIC工作组开发的协议,作为标准被提议用于创建,修改和终止包括视频,语音,即时通信,在线游戏和虚拟现实等多种多媒体元素在内的交互式用户会话。

SIP中一个比较重要的概念是用户代理(User Agent),指的是一个SIP逻辑网络端点,用于创建、发送、接收SIP消息并管理一个SIP会话。

SIP用户代理又可分为用户代理客户端UAC(User Agent Client)和用户代理服务端UAS(User Agent Server)。UAC创建并发送SIP请求,UAS接收处理SIP请求,发送SIP响应。SIP协议会与许多其它的协议协同工作,如SIP报文内容发送会话描述协议(Session Description Protocol,SDP),SDP协议描述了会话所使用流媒体细节,如:使用哪个IP端口,采用哪种编解码器等等。

SIP的一个典型用途是:SIP会话传输一些简单的经过报文的实时传输协议流,RTP本身才是语音或视频的载体。

在前文所述的GB28181协议中,联网系统在进行视音频传输及控制时应建立两个传输通道: 会话通道和媒体流通道。会话通道用于在设备之间建立会话并传输系统控制命令; 媒体流通道用于传输视音频数据,经过压缩编码的视音频流采用流媒体协议RTP/RTCP传输。

2、RTP

RTP(Real-time Transport Protocol)实时传输协议是用于Internet上针对多媒体数据流的一种传输层协议。

RTP协议和RTP控制协议RTCP一起使用,而且它是建立在UDP协议上的。

UDP一样,RTP并不提供任何传输可靠性的保证和流量的拥塞控制机制,无法保证实时业务的服务质量。在实际应用中,RTP协议和UDP两者共同完成传输层协议传输。UDP只是负责传输数据包,RTP提供时间标志戳及其他技术来保证流媒体在实时传输时的时间正确性。RTP具有延时低和支持多播两个特点。

多播功能在网络视频会议方面有着很广泛的应用,它主要应用于这样一种环境

假设红色的圆为存放有视频数据的流媒体服务器,其他的圆为连接到该服务器的各个客户端,当所有的绿色的客户端要求同时观看红色服务器上的某一个视频时,如果服务器为每一路客户端单独建立连接进行数据的传输,这样明显不太合理浪费带宽,因此,多播技术可以很好地解决这种问题,即同一份数据,由服务器发送到公共的多播地址,各个客户端均监听同一个多播地址来获取数据,这样,既节省了带宽,同时也保证了各个客户端所观看的视频的同步。RTP协议在最初就是为了实现类似的视频会议的应用而诞生的

3、RTCP

RTCP(Real-time ControlProtocol,实时传输控制协议)与RTP共同定义在1996年提出的RFC 1889中,它是和 RTP一起工作的控制协议。RTCP单独运行在低层协议上,由低层协议提供数据与控制包的复用。在RTP会话期间,每个会话参与者周期性地向所有其他参与者发送RTCP控制信息包

4、RTSP

RTSP(RealTime Streaming Potocol,实时流协议),是传输层之上的应用层协议(RTP是传输层),它可选择UDP、组播UDP、TCP、RTP为传输机制。RTSP定义了双向多应用程序如何有效地通过IP网络传送多媒体数据。

RTSP充当多媒体服务器的网络远程控制,使实时数据如音频与视频的快进快退、中止、播放成为可能。

和RTP相比,应用场景上RTSP是一种双向实时数据传输协议,它允许客户端向服务器端发送请求,如回放、快进、倒退等操作。协议上,RTSP是应用层协议,可基于RTP来传送数据,还可以选择TCP、UDP、组播UDP等通道来发送数据,具有很好的扩展性。这里就比较清晰了,运营商的IPTV直播业务,没有任何回放、倒退等操作,所以可以直接采用UDP+RTP+组播实现。

5、RTMP

RTMP(Real Time Messaging Protocol,实时消息传送协议)是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的开放协议。

RTMP协议从属于应用层,被设计用来在适合的传输协议(如TCP)上复用和打包多媒体传输流(如音频、视频和互动内容)。RTMP提供了一套全双工的可靠的多路复用消息服务,类似于TCP协议[RFC0793],用来在一对结点之间并行传输带时间戳的音频流,视频流,数据流。通常情况下,不同类型的消息会被分配不同的优先级,当网络传输能力受限时,优先级用来控制消息在网络底层的排队顺序。

除了以上五种协议之外,直播协议HLS、SRT以及苹果公司的HLS协议也是经常会用到的技术。

三、类库

二类库是指Google开源的WebRTC、以腾讯的视频SDK为代表的在线视频SDK

1、WebRTC

20105月,Google6820万美元收购VoIP软件开发商Global IP SolutionsGIPS引擎,并改为名为“WebRTC”

WebRTC可通过简单的 API 为浏览器和移动应用程序提供实时通信(RTC)功能。WebRTC 组件已经过优化,可以最好地满足此目的。

借助 WebRTC,用户可以在基于开放标准的应用程序中添加实时通信功能。它支持在同级之间发送视频,语音和通用数据,从而使开发人员能够构建功能强大的语音和视频通信解决方案。该技术可在所有现代浏览器以及所有主要平台的本机客户端上使用。WebRTC 背后的技术被实现为一个开放的 Web 标准,并在所有主要浏览器中均以常规 JavaScript API 的形式提供。国内提供音视频PaaSSaaS服务的厂商都是基于WebRTC开发的,包括QQ、微信,以及从腾讯和YY出来创业的各种团队。

2、腾讯直播SDK

直播 SDK 是腾讯云视立方产品家族的子产品之一。腾讯直播 SDK 支持直播推流、拉流、主播观众互动连麦、主播跨房 PK 等能力

除了腾讯直播SDK以外,YY的声网、钉钉的vidyo等,也提供类似的在线直播平台SDK。可以不用自己做太多的开发。

四、视频形式及常见解决方案

从交互方式来看,流媒体分为点播(VOD)和直播(LIVE)两种。

直播(LIVE):HLS,RTMP,http+MP4,http+flv,RTP+RTSP

点播(VOD):http+MP4,http+flv,HLS,DASH

从业务场景来看,常见的应用方案可以归纳为以下几种。

直播:RTMP,HLS,http+flv

音视频通话:webrtc(RTP),SIP+RTP

视频点播:http+MP4,http+flv,hls

IPTV:RTSP(信令)+RTP(媒体)

会议电视:RTP(媒体)+SIP(信令),H323(信令)+RTP(媒体)

视频监控:国标SIP(信令)+RTP(媒体),RTSP(媒体)+RTP(媒体)

VOIP:SIP(信令)+RTP(媒体)

当然,以上只是一个简单的介绍,具何如何应用,还要看自己的业务需求。

喜欢本文的话,欢迎关注活在信息时代哦:)

活在信息时代的其它文章:
狗大户要加入金砖国家了?中国:积极支持金砖国家扩员
苏纳克入主唐宁街,老拜登的身体健康无疑是当下最值得关注的事了
程序员应知应会之时序数据库:从Apache IoTDB说起
空中计算:把一切可利用的计算资源用起来
带你一文读懂吃大闸蟹的那些事儿
程序员应知应会之Spring Data Jpa为什么不用写@Repository注解?
技术争鸣:《MySQL开发规范》过时还是视图过时?
赵云叫化冻?曹操叫变巨?一文带你读懂字符编码那些事儿
诺贝尔经济学奖得主曾因考核不合格被西南财大解聘?真相是。。。
目前的AI技术有未来吗?从自动驾驶技术说起
群魔乱舞,新能源汽车这都起得啥名字啊?
光学神经网络简介:从世界上最聪明的玻璃说起
道德与才华孰重?从北理工院士线上会议被女博士后多次亲吻说起
美卫生部被曝购买大量核辐射病药物,人类是否站在悬崖边缘?
图像识别(十):人脸识别
图像识别(九):循环神经网络
图像识别(七):卷积神经网络
图像识别(六):深度置信网络
图像识别(五):浅层神经网络
图像识别(四):图像特征选择与提取
图像识别(三):图像预处理
图像识别(二):传统技术
图像识别(一):发展与演进
我们生活在一个什么样的时代?“北溪”管道被蓄意破坏说起
软件里的那些反人类设计:从《原神》的角色切换说起
程序员应知应会之文档数据库CouchDB
厌倦了Matlab的授权过期?不如直接用SciLab
数据治理(八):未来发展
数据治理(七):数据清洗
数据治理(六):元数据管理
数据治理(五):规则处理引擎
数据治理(四):能力成熟度模型
数据治理(三):流程理论
数据治理(二):现状和问题
数据治理(一):概述
框架的产生与REST的消亡,从越来越没用的HTTP PUT说起
还在被亲戚朋友的拉票所困扰吗?一文详解网络拉票背后的利益链条
还在苦逼哈哈的996?看看Apache基金会首位华人董事如何工作和生活
边缘计算(二) :发展
边缘计算(一) :兴起
如何进行项目管理?项目经理心中必备的两张表
凛冬将至:寂静许久的俄乌战场又将热闹起来

帝国的荣光与尔一同消散:悼念在绝望中逝世的英国女王

甲午之败是否还会重演?从西工大遭受美国网络攻击说起

时代的疾风吹不走历史的残渣:从智能电视为什么这么难用说起

共享单车,到底是不是一个伪需求

未来的某一天,会写SQL会是当领导的必要条件吗?
多家中字头公司同日从美国退市,山雨欲来吗?
为什么大部分学华为的公司都死掉了?
数字孪生(五):应用领域
数字孪生(四):关键技术
数字孪生(三):技术体系
数字孪生(二):特性与现状
数字孪生(一):概念与起源
想自己写一个数据库吗?你需要了解的SQL解析工具Calcite(一)
程序员应知应会之MySQL数据库的碎片整理
程序员应知应会之设计模式的七大原则
从DevOps到AIOps(六):AIOps简介
从DevOps到AIOps(五):配置管理及监控工具
从DevOps到AIOps(四):编译工具
从DevOps到AIOps(三):持续集成工具
从DevOps到AIOps(二):协同开发工具
从DevOps到AIOps(一):DevOps的背景与发展
程序员应知应会之越权问题
自然语言处理(一):从试图建立规则到试图适应规则
Nginx的负载均衡没起作用?原来原因在这里
移动开发知识:Android平台如何进行蓝牙模块开发
Java程序员应知应会之Maven和Gradle的区别
PHP到底适不适合做大型网站?
GIS开发?你不得不了解的那些行业标准
程序员应知应会之MySQL的存储引擎
程序员应知应会之数据库发展简史
程序员应知应会之二进制小数的计算
高薪程序员必备知识:图数据库

JDK13新特性详解:老旧的Socket API是如何被重写的

Java Web程序员应知应会:Jsp的内置对象与应用
如何在图片与文字之间互相检索?程序员不可不知的跨模态技术
高级Java程序员必备的二十个技术点,你会了吗?(一)

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多