TSINGSEE青犀视频根据不同的播放协议,拥有多种类型的视频流媒体播放器,以便满足用户在不同场景下的需求,比如EasyPlayer流媒体播放器,就包括有EasyPlayer-RTSP、EasyPlayer- RTMP、EasyPlayerPro 和EasyPlayer.js 等版本。以上播放器均核心基于ffmpeg,性能稳定、高效、可靠、可控,支持RTSP、RTMP、HTTP、HLS、UDP、RTP、File等多种流媒体协议播放。
在之前的blog,我们以Android平台国标接入终端为例,分别介绍了一些常规的功能,比如REGISTER、CATALOG、INVITE、Keepalive、SUBSCRIBE、NOTIFY等常规操作,今天主要介绍下语音广播和语音对讲这部分。
GB28181协议是视频监控领域的国家标准,本文将解析如何在FFmpeg中增加对GB28181协议的支持,使其可以与支持GB28181协议的设备进行通信与控制,实现设备的注册、保活以及流媒体的传输。 GB28181协议指的是国家标准GB/T 28181—2016《公共安全视频监控联网系统信息传输、交换、控制技术要求》1,该标准规定了公共安全视频监控联网系统的互联结构, 传输、交换、控制的基本要求和安全性要求, 以及控制、传输流程和协议接口等技术要求,是视频监控领域的国家标准。GB28181协
在事先Android平台RTSP、RTMP转GB28181网关之前,我们已经实现了Android平台GB28181的接入,可实现Android平台采集到的音视频数据,编码后,打包按需发到GB28181服务平台。此外,拉流端,我们已经有了成熟的RTSP和RTMP拉流播放方案。
基于RTP的 PS封装首先按照ISO/IEC13818-1:2000将视音频流封装成PS包,再将PS包以负载的方式封装成 RTP包。
实时视频点播、历史视频回放与下载的 TCP媒体传输应支持基于RTP封装的视音频PS流,封装格式参照IETFRFC4571。
EasyPlayer播放器系列已经支持了H265编码视频的播放,根据用户在不同场景下的不同需求,我们已经有EasyPlayer-RTSP、EasyPlayer- RTMP、EasyPlayerPro 和EasyPlayer.js 等版本。
做转码服务的原型时,看了看MCU的实现,考虑到如果不做转码,可以将多路rtp流直接合成为一路rtmp流输出,这样就相当于实现了多人连麦,并将多人连麦的视频转发直播了,所以做了这个简单的原型实现!
GB28181-2022针对“基于TCP协议的视音频媒体传输”实时点播、历史视频回放与下载中,TCP媒体传输重连机制,做了说明。
我在之前的blog,有提到过Android端GB28181接入端的语音广播和语音对讲,今天主要从GB/T28181-2016官方规范和交互流程,大概介绍下Android平GB28181接入端的语音广播和语音对讲。
sipp是一款VoIP测试工具,日常开发过程中会使用到该软件,但其自身携带的pcap文件夹里面的rtp数据包太小,rtp长时间测试的场景会出现媒体异常的情况,需要制作长时间pcap文件以满足测试,这里记录下使用sipp作为uac和uas对接freeswitch重放长时间rtp数据测试的过程。
GB28181语音广播这块,我们依据GB/T28181-2016针对流程和实例代码,做过详细的描述,本次主要是探讨下,广播数据过来后,如何处理。
对接Android平台GB28181设备接入端语音广播的时候,我们有遇到过INVITE SDP需要PCMA格式的audio,对方同时回了PS和PCMA两种,然后,发数据的时候,直接发了PS的。
今天主要聊聊GB28181中,SSRC的作用,从我们之前跟第三方厂商的对接来看,好多厂商对SSRC的处理,并不符合规范。
早在2015年,我们发布了RTMP直播推送模块,那时候音视频直播这块场景需求,还不像现在这么普遍,我们做这块的初衷,主要是为了实现移动单兵应急指挥系统的低延迟音视频数据传输。好多开发者可能会疑惑,走RTMP怎么可能低延迟?网上看到的RTMP推拉流延迟,总归要2-3秒起,如果是自己实现框架,RTMP推拉流逻辑自己实现的话,延迟确实可以控制在毫秒级,这个已无需赘述。
联网系统有关设备之间会话建立过程的会话协商和媒体协商应采用IETF RFC 4566协议描述,主要内容包括会话描述、媒体信息描述、时间信息描述。
video streaming protocol - 流视频协议是由于流式传输需要将音视频分割成小块,按顺序发送并在接收时播放
RTSP(Real-Time Stream Protocol)协议是一个基于文本的多媒体播放控制协议,属于应用层。RTSP以客户端方式工作,对流媒体提供播放、暂停、后退、前进等操作。该标准由IETF指定,对应的协议是RFC2326。
之前的文章,介绍了RTSP和RTP协议,RTSP用于建立连接及发送请求等,RTP用于实际的媒体数据传输。整个RTSP的流程中,还有一种不可或缺的协议, 那就是RTCP。RTCP的全称是RTP Control Protocol,从英文名称可以看出,其是针对RTP的控制协议!RTCP主要用于提供数据分发质量反馈信息,本文详细介绍一下RTCP协议!
在实现Android平台GB28181前端设备接入之前,我们几年前就有了非常成熟的RTMP推送、RTSP推送和轻量级RTSP服务等模块,特别是RTMP推送,行业内应用非常广泛,好多开发者可能会问,既然有了以上模块,干嘛还要实现GB28181的前端接入呢?
我们在开发网络程序时经常用到UDP或RTP来发送和接收流媒体,而开发程序完毕需要搭建一个环境测试,这时候可能你需要一个推流端或接收端。对于推流端,我们可以借助FFmpeg工具轻松完成该功能,只需要敲一条命令后就可以实现发流,并且支持多种网络协议(UDP/RTP/RTSP/RTMP)。而接收端我们可以使用ffplay,这个程序也是在FFmpeg工具包的Bin目录里面。大家可以根据自己需要使用这两个工具进行推流或接收,下面就以传输协议UDP、RTP为基础,介绍几种最常见的推流场景下两个工具的用法。
在我们研发Android平台GB28181前端音视频接入模块之前,业内听到最多的是,如何用Android或者Windows端,在没有国标IPC设备的前提下,模拟GB28181的信令和媒体流交互流程,实现GB28181整体方案的测试?
调阅实时视频包括信令接口和媒体流接口,采用标准的SIP INVITE+SDP流程,媒体传输使用RTP/RTCP。
首先,我们来看看I帧的PS流格式,这里需要注意的是SPS、PPS之前要加上PES头部。如下图所示,其中绿色部分就是我们拿到的H.264裸流数据,须将它拆分成三段并在前面加上PES头部。这一点在GB28181标准中没有细说,需要通过分析海康IPC流才能看出。
前面三篇blog分别介绍国网B接口注册、资源上报和资源信息获取,今天过一下国网B接口调阅实时视频相关的接口描述和消息示例,做过GB28181设备接入的都知道,国网B接口调阅实时视频流程和GB28181的基本一致的,区别在于SDP的一些参数描述,有些差别,举个例子,调阅实时视频,GB28181的SDP里面“s=Play”,国网B接口SDP取值定义“s=-”,如果严格按照规范来,估计好多系统都没法正常接入。
网络摄像机又叫IP CAMERA(简称IPC)由网络编码模块和模拟摄像机组合而成。网络编码模块将模拟摄像机采集到的模拟视频信号编码压缩成数字信号,从而可以直接接入网络交换及路由设备。网络摄像机内置一个嵌入式芯片,采用嵌入式实时操作系统。网络摄像机是传统摄像机与网络视频技术相结合的新一代产品。摄像机传送来的视频信号数字化后由高效压缩芯片压缩,通过网络总线传送到Web服务器。网络上用户可以直接用浏览器观看Web服务器上的摄像机图像,授权用户还可以控制摄像机云台镜头的动作或对系统配置进行操作。网络摄像机能更简单的实现监控特别是远程监控、更简单的施工和维护、更好的支持音频、更好的支持报警联动、更灵活的录像存储、更丰富的产品选择、更高清的视频效果和更完美的监控管理。另外,IPC支持WIFI无线接入、3G接入、POE供电(网络供电)和光纤接入。
https://webrtchacks.com/a-playground-for-simulcast-without-an-sfu/
通过IP协议传输语音在企业网络和提供商环境中都带来了各种挑战。首先,存在非常高的可用性要求。但是,作为实时服务,用户也会立即注意到服务质量上的问题。特别是数据包丢失、抖动和延迟等网络质量参数对最终的语音质量有重大影响。
https://www.srtalliance.org/interoperability-between-rtp-and-srt/
前 12 个字节出现在每个 RTP 包中,仅仅在被混合器插入时,才出现 CSRC 识别符列表。各个域的含义如下所示:
在此之前,我们先对协议规范做个简单了解:GB28181协议是一种用于视频监控系统互联互通的国际标准,它定义了视频监控系统中的设备间如何进行通信、交换数据和协调控制。以下是GB28181协议的一些主要内容:
RTSP协议是TCP/IP协议体系中的一个应用层协议,EasyNVR视频平台即是支持RTSP协议的流媒体服务器,能够自由对接流媒体服务器平台,支持微信、QQ、支付宝等工具,扫一扫直接观看,且不限制观看人数。
本文档为封装在RTP中的媒体数据的通用前向纠错(FEC)指定了有效负载格式。它基于异或(奇偶校验)操作。本文档中描述的有效负载格式允许终端系统使用不同的保护长度和级别来应用保护,此外还使用不同的保护组大小来适应不同的媒体和信道特性。它能够根据丢包情况完全恢复受保护的数据包或部分恢复有效负载的关键部分。该方案与不支持FEC的主机完全兼容,因此不实现FEC的多播组中的接收机只需忽略保护数据即可工作。本规范淘汰了RFC 2733和RFC 3009。本文件中规定的FEC与RFC 2733和RFC 3009不向后兼容。
原博客地址:http://www.cnblogs.com/qingquan/archive/2011/07/28/2120440.html
大家好,又见面了,我是你们的朋友全栈君。 1简介 在Internet上用分组传送话音的质量不够好的一个重要原因是比较高的丢包率。尤其在 广域网中,这个问题相当突出。不幸的是,实时多媒体业务对于延时的要求相当严格,因此 不大可能通过重传来解决丢包的问题。 正是出于这个原因,大家提出用前向纠错(FEC)来解决Internet上的丢包问题[1][2]。 尤其是对于传统纠错码如校验码、RS码、汉明码等的使用引起了很多人的注意。为了能够更 好地应用这些纠错码,必须有相关的 协议来支持。 本文档定义了一种RTP的荷载格式,允许对于实时媒体流进行一般性的前向纠错。在这 里“一般性”指的是(1)与被保护的媒体类型无关,即音频、视频或其它;(2)足够灵活, 能够支持多种FEC机制;(3)自适应性,可以方便的修改FEC方案而不需要带外的信令支持; (4)支持若干种不同的FEC包的传输机制。 2术语 本文档中使用了下面这些术语: 媒体荷载:一段待传输的未加保护的用户数据。媒体荷载放在一个RTP包的内部。 媒体头:包含媒体荷载的包的RTP头 媒体包:媒体荷载与媒体头合起来称作媒体包 FEC包:发送端将媒体包作为前向纠错算法的输入,输出除了这些媒体包之外,还有一些 新的数据包称作FEC包。FEC包的格式在本文档中进行说明。 FEC头:FEC包的头信息称作FEC头。 FEC荷载:FEC荷载是FEC包中的荷载。 关联的:一个FEC包称作与一个或几个媒体包是关联的,如果在这个FEC包的产生过程 中这几个媒体包用作EC算法的输入 关键词“必须”,“必须不”,“要求的”,“会“,”不会“,“应该”,“不应该”, “建议的”,“或许”,“可选的”在 RFC2119[4]中解释。 3基本操作 这里描述的荷载格式用于一个RTP会话中的某一端想要用FEC来保护它所传送的媒体数 据流的情况。这种格式所支持的FEC是基于简单异或校验的纠错算法。发送端从媒体数据流 中取出若干个包,并对它们整个施以异或操作,包括RTP头。基于这样一个过程,可以得到 一个包含FEC信息的RTP包。这个包可以被接收端用来恢复任何一个用来产生它的包。本文 档中并未规定多少个媒体包合起来产生一个FEC包。不同参数的选取会导致在overhead,延 时和恢复能力之间的一个不同的折中方案。第4节给出了一些可能的组合。 发送端需要告诉接收端哪些媒体包被用来产生了一个FEC包,这些信息都包含在荷载信 息中。每个FEC包中包含一个24比特的mask,如果mask的第i个比特为1,序号为N+i 的媒体包就参与了这个FEC包的生成。N称作基序号,也在FEC包中传送。通过这样一种方 案就可以以相当小的overhead来用任意的FEC纠错方案恢复丢失的数据包。 本文档也描述了如何使接收端在不了解具体纠错码细节的情况下利用FEC的方法。这就 给了发送端更大的灵活性,它可以根据网络状态而自适应选择纠错码,而接收端仍能够正确 解码并用于恢复丢失的包。 发送端生成FEC包之后,就把它们发给接收端,同时,发送端也照常发送原来的媒体数 据包,就好像没有FEC一样。这样对于没有FEC解码能力的接收端,媒体流也照常可以接收 并解码。然而,对于某些纠错码来说,原始的媒体数据包是不需要传输的,仅靠FEC包就足 以恢复丢失的包了。这类码就具有一个很大的缺点,就是要求所有的接收者都具有FEC解码 能力。这类码在本文档中也是支持的。 FEC包并不与媒体包在同一个RTP流中传输,而是在一个独立的流中传输,或者作为冗 余编码(redundantencoding)中的次编码(secondaryencoding)来传输[5]。当在另一个 流中传输时,FEC包有它们自己的序号空间。FEC包的时间戳是从对应的媒体包中得来的,同 样是单调递增。因此,这样的FEC包可以很好地应用于任何具有固定差值的包头压缩方案。 本文并没有规定何为“一个独立的流”,而把它留给上层 协议和具体应用去定义。对于 多播的情况,“一个独立的流”可以通过不同的多播组来实现,或者同一个组的不同端口, 或者同样的组和端口中不同的SSRC。对于单播的情况,可以使用不同的端口或者不同的SSRC。 这些方法都各有其优缺点,选用哪一种取决于具体的应用。 接收端收到FEC包和媒体包之后,先判断是否有媒体包丢失。如果没有,FEC包就直接 被丢弃。如果有丢包,就使用接收到的FEC包和媒体包来进行丢包的重建。这样一个重建过 程是很精确的,荷载以及包头的大部分数据都可以完全恢复出来。 按照本 协议来进行打包的RTP包可以使用一个动态RTP荷载类型号来通知接收端。 4监督码 我们定义f(x,y,..)为数据包x,y,…等的异或,这个函数的输出也是一个数据包,称作 监督包。为简单起见,我们
今天考虑一个mcu混合的实现,也就是接收多路过来的rtp流,然后转发出去一路的rtmp流,使用ffmpeg测试做的记录,刚开始一直通过ffmpeg推送的文件流不能满足要求,还是对参数配置不熟悉;
之前我们已经分享过很多关于音视频处理的文章。其中最绕不开的就是ffmpg工具,这个命令行工具构建了当今大小智能设备音频,视频,图片等多媒体文件处理的方方面面。
GB/T28181-2022和GB/T28181-2016规范,有这么一条“更改了附录 D 基于 TCP 协议的视音频媒体传输要求(见附录 D,2016 年版的附录 L)。”。
RTP全名是Real-time Transport Protocol(实时传输协议)。它是IETF提出的一个标准,对应的RFC文档为RFC3550(RFC1889为其过期版本)。RFC3550不仅定义了RTP,而且定义了配套的相关协议RTCP(Real-time Transport Control Protocol,即实时传输控制协议)。RTP用来为IP网上的语音、图像、传真等多种需要实时传输的多媒体数据提供端到端的实时传输服务。RTP为Internet上端到端的实时传输提供时间信息和流同步,但并不保证服务质量,服务质量由RTCP来提供。
H.264组成 1、网络提取层 (Network Abstraction Layer,NAL) 2、视讯编码层 (Video Coding Layer,VCL) a.H.264/AVC影像格式阶层架构 b.Slice的编码模式 (1) I -slice: slice的全部MB都采用intra-prediction的方式来编码; (2) P-slice: slice中的MB使用intra-prediction和inter-prediction的方式来编码,但每一个inter-prediction blo
IPTV 业务是基于宽带互联网与宽带接入,以机顶盒或其它具有视频编解码能力的数字化设备作为终端,通过聚合SP 的各种流媒体服务内容和增值应用,为用户提供多种互动多媒体服务的宽带增值业务。
新版国家标准GB/T28181-2022《公共安全视频监控联网系统信息传输、交换、控制技术要求》已于2022年12月30日发布,并将于2023年7月1日正式实施。
好多开发者在做国标对接的时候,首先想到的是IPC摄像头,通过参数化配置,接入到国标平台,实现媒体数据的按需查看等操作。
对于语音通信来说,语音的码率较低,添加适当的冗余是对抗网络丢包常见的方式。冗余方式分为多种,包括数据冗余,或者编码冗余等,RED,FEC等都是冗余的一种。如果冗余分数较多,可以采取交织的方式实现。RFC 2198 是冗余数据 RTP 封装的标准协议,RFC 3550 为RTP的基础标准协议,RFC 5109 为FEC数据的 RTP 封装标准协议。webrtc中有RED和FEC相关的实现与处理,这也是在看代码时才决定重新整理协议并记录下来。
=====================================================
在数据包有丢失的环境下进行视频解码不是一件容易的事。Chrome 58中引入了一种新的视频抖动缓冲区,这导致最新版的Chrome在视频显示时一直有问题。由于该问题只在某些数据包丢失时才会出现,因此调试难度很大。为此,webrtc.org提供了一个名为video_replay的工具来复现和分析这些棘手问题。
实时传送协议(Real-time Transport Protocol或简写RTP)是一个网络传输协议,
语音广播功能是GB28181设备接入端非常重要的功能属性,语音广播让终端和平台之间,有了实时双向互动,可以满足执法记录仪、智能安全帽、智能监控、智慧零售、智慧教育、远程办公、明厨亮灶、智慧交通、智慧工地、雪亮工程、平安乡村、生产运输、车载终端等场景的技术诉求。
http://blog.csdn.net/niu_gao/article/details/6946781
领取专属 10元无门槛券
手把手带您无忧上云