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国检推流的更多相关文章

  1. node.js实现国标GB28181流媒体点播(即实时预览)服务解决方案

    背景 28181协议全称为GB/T28181<安全防范视频监控联网系统信息传输.交换.控制技术要求>,是由公安部科技信息化局提出,由全国安全防范报警系统标准化技术委员会(SAC/TC100 ...

  2. [Python数据分析]新股破板买入,赚钱几率如何?

    这是本人一直比较好奇的问题,网上没搜到,最近在看python数据分析,正好自己动手做一下试试.作者对于python是零基础,需要从头学起. 在写本文时,作者也没有完成这个小分析目标,边学边做吧. == ...

  3. 股票的历史市盈率查询PE

    浦发银行的历史市盈率PE查询:https://androidinvest.com/Stock/History/SH600000/ 白云机场的历史市盈率PE查询:https://androidinves ...

  4. A股最新的自由现金流和折现估值查询

    A股最新的自由现金流折现估值,利用自由现金流折现的经典公式,采用 8%.9%.10%.11%.12%.15% 等贴现率来进行估值. SH600000:浦发银行的最新自由现金流和折现估值模型: 浦发银行 ...

  5. 使用java爬虫从雪球网下载股票数据

    雪球网也是采用Ajax方式展示数据,我依然采用开发者工具查看其访问地址和返回数据. 访问使用到的库是jsoup,解析返回的json用的类库是jackson,二者的依赖是: <!-- jsoup ...

  6. 谈谈PBOC3.0中使用的国密SM2算法

    转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/39780825 作者:小马 一 知识准备 SM2是国密局推出的一种他们自己说具有自主 ...

  7. 20155206赵飞 基于《Arm试验箱的国密算法应用》课程设计个人报告

    20155206赵飞 基于<Arm试验箱的国密算法应用>课程设计个人报告 课程设计中承担的任务 完成试验箱测试功能1,2,3 . 1:LED闪烁实验 一.实验目的  学习GPIO原理  ...

  8. node.js实现国标GB28181设备接入的sip服务器解决方案

    方案背景 在介绍GB28181接入服务器的方案前,咱们先大概给大家介绍一下为什么我们选择了用nodejs开发国标GB28181的服务,我大概给很多人介绍过这个方案,大部分都为之虎躯一震,nodejs在 ...

  9. 视频监控GB28181测试参考

    说明: 1.  需要对前端摄像机和后端NVR.解码器.平台进行GB28181测试和开发的人员.本文档提供的一些测试细节,比如测试环境,SIP消息格式说明,SDP文本信息字段说明,GB28181测试注意 ...

随机推荐

  1. leetcode1:在数组中找2个数的和正好等于一个给定值--哈希

    package java_net_test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; pu ...

  2. Storyboard里面的几种Segue区别和视图的切换

    几种segue:push.modal.popover.replace.cutom. 一.视图切换类型介绍 1.在iPhone和iPad中,segue的类型是不同的. 2.在iPhone中,segue有 ...

  3. luigi学习-luigi的配置文件

    一.luigi配置文件的加载顺序 /etc/luigi/client.cfg luigi.cfg LUIGI_CONFIG_PATH环境变量 二.配置文件分节 配置文件被分为了多个section,每一 ...

  4. 操作MySQL数据库

    向表中插入数据 insert 语句可以用来将一行或多行数据插到数据库表中, 使用的一般形式如下: insert [into] 表名 [(列名1, 列名2, 列名3, ...)] values (值1, ...

  5. Discuz X3.2 分区 gid 完美伪静态方法 Apache/Nginx

    Discuz 官方给出的伪静态规则并不完整,只实现了部分的伪静态设置及规则,分区 gid 仍然是 forum.php?gid=xxx 的形式,对于有强迫症的我是无法忍受的,下面给出分区 gid 的伪静 ...

  6. 兼容ie7的导航下拉菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. Kafka入门学习随记(二)

    ====Kafka消费者模型 参考博客:http://www.tuicool.com/articles/fI7J3m --分区消费模型 分区消费架构图 图中kafka集群有两台服务器(Server), ...

  8. Learning Scrapy笔记(一)- Scrapy简单介绍

    Scrapy简述 Scrapy十一个健壮的,用来从互联网上抓取数据的web框架,Scrapy只需要一个配置文件就能组合各种组件和配置选项,并且Scrapy是基于事件(event-based)的架构,使 ...

  9. Python学习教程(learning Python)--3.1 Python的if分支语句

    本节研究一下if分支语句. if分支语句是Python下逻辑条件控制语句,用于条件执行某些语句的控制操作,当if后的条件conditon满足时,if其下的语句块被执行,但当if的控制条件condito ...

  10. 使用Android Studio开发J2SE项目方法

    0.前言 最近因为要为项目开发一个底层的Java应用,所以非常偶然的遇到了这样一个问题,过去Eclipse有Java Project而现在手头使用Android Studio并不能直接建立Java应用 ...