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)

输入:端口号 输出:无 返回值:true表示创建接收端口成功,false表示失败。

备注:媒体服务器收到invite请求后发送自身 sdp 信息,recvPort 需作为 sdp 指定 端口。

媒体服务器收到sip 服务器 invite 请求后
    即执行该操作,如图 1 第2 步。

3)bool AttachMediaSender(conststring&mediasenderaddress,unsignedshortport)

输入:媒体流发送者 IP, 端口 输出:无 返回值:true 表示关联媒体流发送者成功,false 表示失败。

备注:关联媒体流发送者 IP 地址及端口,图 1 第 6 步执行该操作,sdp 信息包含了媒 体流发送者 IP 地址及端口号。

4)bool CreateForwardTransport(unsignedshortsendport)const

输入:本地转发端口 输出:无 返回值:true

表示创建转发端口成功,false表示失败。 备注:自行指定未使用端口即可,图 1 第 8 步执行该操作。

5)bool AttachMediaReceiver(conststring&mediareceiveraddress,unsignedshortport)const

输入:流媒体接收者 IP 地址,端口 输出:无 返回值:true 表示关联媒体流接收者成功,false表示失败。

备注:图 1 第 12 步执行该操作。

6)void DestroySendTransport()const

输入:无 输出:无 返回值:无 备注:释放端口资源,图 1 第15 步执行该操作。

7)void DestroyRecvTransport()const

输入:无 输出:无 返回值:无 备注:释放端口资源,图 1 第17 步执行该操作。

如果出现推流花屏可以用wireshark抓包保存成文件。播放保存下来的文件,如果视频正常,说明视频源

没有问题。如果抓包保存文件见下图。

图2

图3

如需交流请加 流媒体/Ffmpeg/音视频 766718184,库下载地址http://pan.baidu.com/s/1hsysYuo

ffmpeg编译gb28181_GB28181国检推流相关推荐

  1. 3个平台下的ffmpeg——ffmpeg编译

    3个平台下的ffmpeg--ffmpeg编译 ffmpeg编译 需要在3个平台(win\linux\arm)下使用ffmpeg的库,所以进行了ffmpeg的编译. 其中ffmpeg的编译也有许多依赖, ...

  2. android全平台基于ffmpeg解码本地MP4视频推流到RTMP服务器

    音视频实践学习 android全平台编译ffmpeg以及x264与fdk-aac实践 ubuntu下使用nginx和nginx-rtmp-module配置直播推流服务器 android全平台编译ffm ...

  3. ffmpeg源码实现H264推流

    Ubuntu+FFmpeg源码+H264+RTMP推流具体DEMO 因为项目的需要,需要将摄像头的实时流,通过ffmpeg源码实现将一帧帧的H264数据推流到Nginx服务器上. 程序运行时出现报错: ...

  4. 在Ubuntu下FFmpeg编译,支持x264和x265(HECV)

    所有下载的源 在Ubuntu下FFmpeg编译,支持x264和x265. Ubuntu 12.04 FFmpeg 2.1 Release 注意: cmake要升级要2.8.8 yasm要升级到1.2. ...

  5. win7下ffmpeg编译动态链接库整理

    1.写在ffmpeg编译前 关于ffmpeg的编译过程google一搜,一大堆,ffmpeg编译真的有那么难么?在我编译成功后回头来看,网上的资料过多,反而使自己走了很多的弯路.即便有些楼主亲自测试后 ...

  6. ffmpeg编译(生成Windows或Win32平台dll, lib)

    ffmpeg编译(生成Windows或Win32平台dll, lib) 介绍:本文简要介绍通过cygwin环境来编译生成ffmpeg. 包括解码组件libfaad与libopencore-amrnb的 ...

  7. ffmpeg编译android,FFMPEG Android(2) 编译编译静态ffmpeg可执行文件

    基础编译,请参考上一篇文章: http://blog.csdn.net/muwesky/article/details/55259945 如果想编译静态ffmpeg可执行文件,编译脚本如下: #!/b ...

  8. ubuntu下ffmpeg编译安装

    ubuntu下ffmpeg编译安装 解决库链接不上的问题 ubuntu下ffmpeg编译安装   1.ffmpeg是什么东西?相信很多人第一次接触这个东西,我先在这里做个简单的介绍. FFmpeg是一 ...

  9. Linux下 FFmpeg 编译安装

    FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序. 官网:http://ffmpeg.org 一.FFmpeg安装 安装依赖包: yum install libth ...

最新文章

  1. 阿里P8大牛耗费三年整理的:Java大厂面试题
  2. Docker创建 tomcat/weblogic 集群
  3. WINXP 提升速度
  4. RXThink 官方网站正式上线
  5. 学习教材《构建之法》遇到的问题及思路
  6. oracle 分页查询
  7. 58岁博导为88岁老母跳舞,“母亲眼里我永远是个孩子”
  8. c语言中的数据变量类型,大小
  9. 在java程序中怎么造成死锁_java – 了解为什么在此实现中发生死锁
  10. Java 之常用API(一)
  11. CDH5 6 7安装包
  12. iOS开发 Xcode10报错缺少libstdc++.6.0.9.tbd
  13. 教你Java 代码性能优化小妙招,速速来看
  14. 微信分身服务器验证失败咋办,微信好友验证发送失败原因分析及解决方法汇总...
  15. 什么是银行的表内表外业务?
  16. java解决windows下文件没有Everyone以及完全控制的权限问题
  17. 清朝十二帝记忆顺口溜
  18. tenacity发生异常/失败/错误时重试retry机制,Python
  19. JAVA IO必会概念
  20. 如何在电脑上添加蓝牙耳机设备

热门文章

  1. windows的bat脚本编写
  2. GridAdaptedFeatureDetector 编译错误定位
  3. 单行文本溢 和 多行文本溢出
  4. 青岛计算机操作员初级考试时间,青岛市2021年初级会计考试时间安排在这里!...
  5. pay java parent_全能第三方支付pay-java-parent 2.13.1 发布
  6. JavaScript原型,原型链 ? 有什么特点?
  7. 关于一级分类和二级分类
  8. 16进制转8进制 两种方法先转二进制在转8进制或先转10进制在转8进制
  9. AndroidStudio之Robolectric单元测试 No Such manifest file
  10. 一些实用的电脑软件推荐