GB28181国检推流
GB28181国检有一向内容是实时播放摄像机流,经过一番努力,搞定这个功能,现分享心得:
首先需要了解流程,说简答点就是视频流从哪里来到什么地方去,下图描述了视频流推流,转发的
基本过程:信令交互成功以后,摄像机(媒体流发送者)推送流到媒体服务器,媒体服务器在指定
的端口接收到视频流后,转发给流媒体接收者(例如某台PC的某个空闲端口)。

讲了基本流程,我们来看下28181要求的视频流格式。GB28181要求传输的视频流格式为PS流,或者
H264裸流,又或者是MP4格式,其中PS流及H264裸流较常见。PS流是如何封装的这里不细述,可以查询
相关文档。如何区分是PS流还是H264裸流有个简答的方法:用wireshark抓包,数据包类型是rtp的是PS流
数据类型是udp是H264裸流。
准备工作完毕,开始讲推流。推流的前提是信令交互已经成功。下面说下基于jpmedia推流的基本步骤。

图1
1) static boolInitialize()
输入:无 输出:无 返回值:true 表示初始化成功,false 表示失败。
初始化接口库,媒体服务器接收到 sip 服务器 invite请求后即执行该操作,如图 1 第 2 步。
2) bool CreateRecvTransport(unsignedshortrecvPort) <br>
输入:端口号 输出:无 返回值:true表示创建接收端口成功,false表示失败。
备注:媒体服务器收到invite请求后发送自身 sdp 信息,recvPort 需作为 sdp 指定 端口。
媒体服务器收到sip 服务器 invite 请求后<br> 即执行该操作,如图 1 第2 步。
3)bool AttachMediaSender(conststring&mediasenderaddress,unsignedshortport)
输入:媒体流发送者 IP, 端口 输出:无 返回值:true 表示关联媒体流发送者成功,false 表示失败。
备注:关联媒体流发送者 IP 地址及端口,图 1 第 6 步执行该操作,sdp 信息包含了媒 体流发送者 IP 地址及端口号。<br>
4)bool CreateForwardTransport(unsignedshortsendport)const
输入:本地转发端口 输出:无 返回值:true
表示创建转发端口成功,false表示失败。 备注:自行指定未使用端口即可,图 1 第 8 步执行该操作。<br>
5)bool AttachMediaReceiver(conststring&mediareceiveraddress,unsignedshortport)const
输入:流媒体接收者 IP 地址,端口 输出:无 返回值:true 表示关联媒体流接收者成功,false表示失败。
备注:图 1 第 12 步执行该操作。
6)void DestroySendTransport()const
输入:无 输出:无 返回值:无 备注:释放端口资源,图 1 第15 步执行该操作。<br>
7)void DestroyRecvTransport()const
输入:无 输出:无 返回值:无 备注:释放端口资源,图 1 第17 步执行该操作。
如果出现推流花屏可以用wireshark抓包保存成文件。播放保存下来的文件,如果视频正常,说明视频源
没有问题。如果抓包保存文件见下图。

图2

图3
如需交流请加 流媒体/Ffmpeg/音视频 127903734

GB28181国检推流的更多相关文章
- node.js实现国标GB28181流媒体点播(即实时预览)服务解决方案
背景 28181协议全称为GB/T28181<安全防范视频监控联网系统信息传输.交换.控制技术要求>,是由公安部科技信息化局提出,由全国安全防范报警系统标准化技术委员会(SAC/TC100 ...
- [Python数据分析]新股破板买入,赚钱几率如何?
这是本人一直比较好奇的问题,网上没搜到,最近在看python数据分析,正好自己动手做一下试试.作者对于python是零基础,需要从头学起. 在写本文时,作者也没有完成这个小分析目标,边学边做吧. == ...
- 股票的历史市盈率查询PE
浦发银行的历史市盈率PE查询:https://androidinvest.com/Stock/History/SH600000/ 白云机场的历史市盈率PE查询:https://androidinves ...
- A股最新的自由现金流和折现估值查询
A股最新的自由现金流折现估值,利用自由现金流折现的经典公式,采用 8%.9%.10%.11%.12%.15% 等贴现率来进行估值. SH600000:浦发银行的最新自由现金流和折现估值模型: 浦发银行 ...
- 使用java爬虫从雪球网下载股票数据
雪球网也是采用Ajax方式展示数据,我依然采用开发者工具查看其访问地址和返回数据. 访问使用到的库是jsoup,解析返回的json用的类库是jackson,二者的依赖是: <!-- jsoup ...
- 谈谈PBOC3.0中使用的国密SM2算法
转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/39780825 作者:小马 一 知识准备 SM2是国密局推出的一种他们自己说具有自主 ...
- 20155206赵飞 基于《Arm试验箱的国密算法应用》课程设计个人报告
20155206赵飞 基于<Arm试验箱的国密算法应用>课程设计个人报告 课程设计中承担的任务 完成试验箱测试功能1,2,3 . 1:LED闪烁实验 一.实验目的 学习GPIO原理 ...
- node.js实现国标GB28181设备接入的sip服务器解决方案
方案背景 在介绍GB28181接入服务器的方案前,咱们先大概给大家介绍一下为什么我们选择了用nodejs开发国标GB28181的服务,我大概给很多人介绍过这个方案,大部分都为之虎躯一震,nodejs在 ...
- 视频监控GB28181测试参考
说明: 1. 需要对前端摄像机和后端NVR.解码器.平台进行GB28181测试和开发的人员.本文档提供的一些测试细节,比如测试环境,SIP消息格式说明,SDP文本信息字段说明,GB28181测试注意 ...
随机推荐
- 移植u-boot-1.1.6(原创)
#u-boot:u-boot-1.1.6#server:ubuntu 12.04#gcc: arm-linux-gcc -4.3.2# 一.建立单板1> /board/smdk2410 : cp ...
- Linux下Mysql主从复制(Master-Slave)与读写分离(Amoeba)实践
一.为什么要做Mysql的主从复制(读写分离)?通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低.为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻 ...
- Vue.js学习 Item5 -- 计算属性computed与$watch
在模板中绑定表达式是非常便利的,但是它们实际上只用于简单的操作.模板是为了描述视图的结构.在模板中放入太多的逻辑会让模板过重且难以维护.这就是为什么 Vue.js 将绑定表达式限制为一个表达式.如果需 ...
- 常见的HTTP错误总结
一般来说HTTP2XX,代表请求正常完成,HTTP3XX代表网站重定向,HTTP4XX,代表客户端出现错误,HTTP5XX,代服务器端出现了错误 HTTP301:请求的数据具有新的位置 HTTP302 ...
- Android Material Design:NavigationView抽屉导航菜单
需要添加的包: 测试代码: package com.zzw.navigationview; import android.app.Activity; import android.os.Bundle; ...
- 5)Java部分常用package功能介绍
1> java.lang (package) 这个是系统的基础类,比如String等都是这里面的,这个package是唯一一个可以不用import就可以使用的Package 包中关键类 ...
- scala函数组合器
1.map 在列表中的每个元素上计算一个函数,并且返回一个包含相同数目元素的列表. scala> numbers.map(_ * 2)res3: Array[Int] = Array(2, 4, ...
- C# 多线程操作样例
using System; using System.Threading; //引用多线程 namespace ThreadTest { public class Alpha { public voi ...
- Linux平台下:块设备、裸设备、ASMlib、Udev相关关系
对磁盘设备(裸分区)的访问方式分为两种:1.字符方式访问(裸设备):2.块方式访问 Solaris平台 : 在Solaris平台下,系统同时提供对磁盘设备的字符.块方式访问.每个磁盘有两个设备文件名: ...
- R语言中判断是否是整数。以及读写excel
今天接手一个重复性工作, 需要手工把产品运营们在excel里写的活动规则, 插入数据库表中.为了减少出错, 提高效率. 再加上最近刚刚学R语言, 就用R练练手, 自动生成mysql的sql语句. 一次 ...