ffmpeg编译gb28181_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)
输入:端口号 输出:无 返回值: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国检推流相关推荐
- 3个平台下的ffmpeg——ffmpeg编译
3个平台下的ffmpeg--ffmpeg编译 ffmpeg编译 需要在3个平台(win\linux\arm)下使用ffmpeg的库,所以进行了ffmpeg的编译. 其中ffmpeg的编译也有许多依赖, ...
- android全平台基于ffmpeg解码本地MP4视频推流到RTMP服务器
音视频实践学习 android全平台编译ffmpeg以及x264与fdk-aac实践 ubuntu下使用nginx和nginx-rtmp-module配置直播推流服务器 android全平台编译ffm ...
- ffmpeg源码实现H264推流
Ubuntu+FFmpeg源码+H264+RTMP推流具体DEMO 因为项目的需要,需要将摄像头的实时流,通过ffmpeg源码实现将一帧帧的H264数据推流到Nginx服务器上. 程序运行时出现报错: ...
- 在Ubuntu下FFmpeg编译,支持x264和x265(HECV)
所有下载的源 在Ubuntu下FFmpeg编译,支持x264和x265. Ubuntu 12.04 FFmpeg 2.1 Release 注意: cmake要升级要2.8.8 yasm要升级到1.2. ...
- win7下ffmpeg编译动态链接库整理
1.写在ffmpeg编译前 关于ffmpeg的编译过程google一搜,一大堆,ffmpeg编译真的有那么难么?在我编译成功后回头来看,网上的资料过多,反而使自己走了很多的弯路.即便有些楼主亲自测试后 ...
- ffmpeg编译(生成Windows或Win32平台dll, lib)
ffmpeg编译(生成Windows或Win32平台dll, lib) 介绍:本文简要介绍通过cygwin环境来编译生成ffmpeg. 包括解码组件libfaad与libopencore-amrnb的 ...
- ffmpeg编译android,FFMPEG Android(2) 编译编译静态ffmpeg可执行文件
基础编译,请参考上一篇文章: http://blog.csdn.net/muwesky/article/details/55259945 如果想编译静态ffmpeg可执行文件,编译脚本如下: #!/b ...
- ubuntu下ffmpeg编译安装
ubuntu下ffmpeg编译安装 解决库链接不上的问题 ubuntu下ffmpeg编译安装 1.ffmpeg是什么东西?相信很多人第一次接触这个东西,我先在这里做个简单的介绍. FFmpeg是一 ...
- Linux下 FFmpeg 编译安装
FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序. 官网:http://ffmpeg.org 一.FFmpeg安装 安装依赖包: yum install libth ...
最新文章
- 阿里P8大牛耗费三年整理的:Java大厂面试题
- Docker创建 tomcat/weblogic 集群
- WINXP 提升速度
- RXThink 官方网站正式上线
- 学习教材《构建之法》遇到的问题及思路
- oracle 分页查询
- 58岁博导为88岁老母跳舞,“母亲眼里我永远是个孩子”
- c语言中的数据变量类型,大小
- 在java程序中怎么造成死锁_java – 了解为什么在此实现中发生死锁
- Java 之常用API(一)
- CDH5 6 7安装包
- iOS开发 Xcode10报错缺少libstdc++.6.0.9.tbd
- 教你Java 代码性能优化小妙招,速速来看
- 微信分身服务器验证失败咋办,微信好友验证发送失败原因分析及解决方法汇总...
- 什么是银行的表内表外业务?
- java解决windows下文件没有Everyone以及完全控制的权限问题
- 清朝十二帝记忆顺口溜
- tenacity发生异常/失败/错误时重试retry机制,Python
- JAVA IO必会概念
- 如何在电脑上添加蓝牙耳机设备
热门文章
- windows的bat脚本编写
- GridAdaptedFeatureDetector 编译错误定位
- 单行文本溢 和 多行文本溢出
- 青岛计算机操作员初级考试时间,青岛市2021年初级会计考试时间安排在这里!...
- pay java parent_全能第三方支付pay-java-parent 2.13.1 发布
- JavaScript原型,原型链 ? 有什么特点?
- 关于一级分类和二级分类
- 16进制转8进制 两种方法先转二进制在转8进制或先转10进制在转8进制
- AndroidStudio之Robolectric单元测试 No Such manifest file
- 一些实用的电脑软件推荐