- 博客(38)
- 资源 (10)
- 收藏
- 关注
原创 GB28181协议
如果您从事安防监控行业应该对GB28181这个词不陌生,很多刚入行的小白可能对B28181并不了了解,本文主要讲述GB28181用途以及基本的协议内容。 GB28181(也被称为国标)基本的作用是解决平台之间互通的问题(广义上说摄像机、NVR也是平台)。
2024-02-23 15:48:19 940
原创 国网B接口 视频对接
国网B接口 视频对接 国网(国家电网)B接口 这块的资料很少,正好项目碰到国网B接口视频对接需求,开发完成后觉得写一篇文章,方便后来者。国网B接口视频对接 分两块:一是跟B接口设备对接,二是 跟上级B接口平台对接(在电科院过检时两项功能都需要)。本来主要讲述 跟B接口设备对接这一块。 首先配置B接口 设备(摄像机或者NVR)海康B接口设备配置界面如下: ...
2022-05-18 12:58:02 485 1
原创 Ubuntu16.04 打开txt文件乱码
最近遇到个小问题:Ubuntu16.04下打开txt出现乱码,倒腾下解决了这个问题,记录下来。Ubuntu16.04 默认已经安装gedit。直接双击被打开的文件默认用gedit打开,显然这种方式行不通。可行的方式 是先打开gedit ,再选择被打开的文件。gedit左下方有个下拉框供选择文件的编码的方式。如果已存在的编码方式不能打开文件,还可以将备选编码Add 到可选的编码的方式,后面有时间补充截图。默认的自动检测编码方式 并不智能。说到这里肯定有人会问被打开的文件是什么编码格式又...
2021-04-03 10:33:35 289
原创 windows 下编译64位ffmpeg
window下如何编译ffmpeg 前文已有介绍,前面介绍的都是如何编译32位的库,本文主要介绍window下如何编译64位ffmpeg库。一.搭建编译环境 1.下载 windows下编译64位Ffmpeg 需用到Msys及MinGW-w64.首先将他们下载下来,下载地址如下:MinGW-w64:https://sourceforge.net/projects/mingw-w64/files/latest/downloadMsys:https://sourceforge...
2021-04-03 10:32:51 417
原创 Ffmpeg 探测输入源类型
本文主要记录ffmpeg探测输入源的几个点,方便以后查阅代码。虽然项目时间很赶,还是找个时间做个记录,好记性不如备忘录,时间久了终是会忘记。Ffmpeg版本为4.0.2,版本很重要,Ffmpeg前后版本差距很大。以264为例,探测输入源视频是否是H264编码的代码在h264dec.c文件中,该文件在libavformat目录下。文件内容不多,截图如下。 图1 h264dec...
2021-04-03 10:31:58 328
原创 Application provided invalid, non monotonically increasing dts to muxer in stream
很多同学在使用Ffmpeg过程中都遇到Application provided invalid, non monotonically increasing dts to muxer in stream错误,报这个错误的原因是视频源时间戳出问题了,Ffmpeg要求视频源时间戳递增,如不后面的视频包时间戳比之前的时间戳小,ffmpeg会选择丢弃此类视频包,并报如上错误。如何解决这个问题,方法1是重新给视频包打时间戳可以重0开始依次递增,方法2是去掉ffmpeg的这个限制。如需交流可加...
2021-04-03 10:31:03 2534 4
原创 Ffmpeg音频转码 卡顿(MP2转AAC)
最好经手一个小的功能将mp2实时流转成AAC并发布成rtmp音频流,本身不是很难的一个需求,一个晚上就能将功能开发好。功能开发完毕后,找来一音频文件利用Ffmpeg命令将音视频文件推成实时udp格式音频流,具体的推送命令是: 1 ffmpeg.exe -r -i F:\test.mp2 -acodec copy -f mp2 udp://127.0.0.1:1234 测试程序以udp://127.0.0.1:1234为输入源,rtmp://127...
2021-04-03 10:30:24 1164
原创 PJISP 修改 消息头Fromto字段
PJISP 修改 消息头Fromto字段 项目需求,需要修改sip信令消息头中Fromto字段,完成此功能需要修改sip库(PJSIP)源码,具体如下: PJSIP 消息头 Formto 字段默认的格式是sip:平台@平台IP地址,例如sip:34020000001320000001@192.168.1.64如要修该消息该字段,比如加上Port ,需要修改宏定义PJSIP_ALLOW_PORT_IN_FROMTO_HDR的值,默认是0改成1即可。该宏在 sip_config.h中...
2021-04-03 10:29:41 307
原创 PJSIP dialog inv销毁
PJSIP dialog inv销毁 PJSIP的Diaglog(类型为pjsip_dialog) 可以被外部调用,同时PJSIP有自己的机制销毁用户创建的Dialog,如PJSIP内部销毁了某个Diaglog,用户在不知情的情况下继续使用该Dialog,可能会导致程序崩溃。具体效销毁的过程:PJSIP在inv_set_state方法检测Dialog关联的inv(类型为pjsip_inv_session)状态,inv状态为PJSIP_INV_STATE_DISCONNECTED时 ...
2021-04-03 10:28:59 146
原创 H265 Rtp封包
H265 Rtp封包可以参考Ffmpeg,具体实现在文件rtpenc_h264_hevc.c(4.0.1版本),核心的方法是nal_send这个方法有些绕,下面帖子具体的代码及注释。static void nal_send(AVFormatContext *s1, const uint8_t *buf, int size, int last){ RTPMuxContext *s = s1->priv_data; enum AVCodecID codec = s1->
2021-04-03 10:28:21 337
原创 Ubuntu下编译Poco库
本文主要记录下Ubuntu下编译Poco C++库的配置项以备后用。系统版本:Ubuntu 16.04,1 Poco版本:1.9.0基本的步骤如下: 1.从官网下载最新的Poco源码,地址是:https://pocoproject.org/download.html 2. 安装Openss库 apt-get install libssl-dev 3.配置Poco: 1 sudo ./configure --no-tests --n...
2021-04-03 10:27:30 621
原创 PJSIP 调用的GUID库
PJSIP 调用的GUID库 PJSIP库产生随机序列串用到GUID库,针对不同的平台使用的方式不同:Windows平台下使用的是Windows系统APICoCreateGuid,在方法pj_generate_unique_string中调用;Linux平台下如果系统没有安装libuuid,默认使用Guid_simple.c中的pj_generate_unique_string(简单代码实现获取随机数),如果已经安装libuuid则使用Guid_uuid.c中的pj_genera...
2021-04-03 10:26:52 158
原创 PJSIP Socket 模型
前些日子为解决项目中问题调试到PJSIP Socket收发数据部分 ,好记性不如烂笔头,记录下PJSIP 使用的Socket 模型 ,以备后用。 不同平台下PJSIP采用不同的 Socket模型,Windows系统下采用了 完成端口模型,linux系统下兼容Select及EPoll模型,通过配置项进行选择,配置时加上--enable-epoll 选择EPoll模型,默认选择Select模型。 如需交流可加QQ群1038388075,766718184 或者QQ3...
2021-04-02 11:17:19 107
原创 几个FFmpeg 视频参数 fps、tbr、tbn、tbc
几个FFmpeg 视频参数 fps、tbr、tbn、tbc我们用Ffplay播放文件或者视频流命令行会出现fps、tbr、tbn、tbc等参数如下图所示 图1 ffplay 播放文件示意图fps表示平均帧率,总帧数除以总时长(以s为单位)。tbr 表示帧率,该参数倾向于一个基准,往...
2021-04-02 11:16:28 2542
原创 PJSIP库设置Via地址
好记性不如烂笔头,解决项目问题,调试代码跟踪到PJSIP 设置Via地址位置,记录下来,以备后用。PJSIP库在方法stateless_send_transport_cb中设置Via地址值,该方法在文件sip_util.c中,具体位置如下图所示: 图1 设置via地址位置如需交流可以加入QQ群 ...
2021-04-02 11:15:20 239
原创 Ffmpeg AAC 编码错误 Input contains (near) NaN/+-Inf
Ffmpeg AAC编码 如果传入参Frame的Sample Format 为AV_SAMPLE_FMT_S16,会出现错误提示 Input contains (near) NaN/+-Inf,需要将Frame的Sample Format 设置为AV_SAMPLE_FMT_FLTP小小错误,有时会折腾人,希望后来者少走弯路。 如需交流可加QQ群1038388075,766718184 或者QQ3501870...
2021-04-02 11:14:29 1171
原创 Gitblit 添加密钥实现客户端无密码pull、push代码
之前管理代码用的是SVN,项目需要将管理代码软件切换为Git 折腾了一天,记录下遇到的小坑,方便后来人。服务端 服务端 的系统是Windows Sever2008 ,首先在服务端安装window版本的gitblit,具体的安装方法教程很多,可以参考这篇博文https://www.cnblogs.com/ucos/p/3924720.html,这篇文章写的很详细,初学者详细为王。需要注意的是启动gitblit 文章的方法是双击批处理文件,我这里需要打开命令行并cd 到文件gitb...
2021-04-02 11:13:44 366
原创 Window下编译 64位ffmpeg 引入libx264及libmp3lame编码库
好记性不如烂笔头,每次编译总要有些时间折腾,记录下编译过程,方便后来者。 本文 介绍windows下编译64位Ffmpeg库 (版本V4.02)如何引入libx264及libmp3lame(编码mp3)库。编译环境选择MinGW64。MinGW64如何安装可参考前面的文章https://www.cnblogs.com/wanggang123/p/9896564.html一.. 编译x264库,如需要ffmpeg支持h264编码编译时需要将它添加进来。编译x264库相对容易,一次搞定。...
2021-04-02 11:12:42 942
原创 VideoJs 播放实时Hls问题
项目中使用VideoJS 播放流媒体服务转码的Hls出现异常现象。经测试:下级国标平台推送的国标设备流都未出现问题,下级国标平台将Rtsp流转码为国标流推送至国标上级平台时,出现部分视频流转码为Hls流只能显示一帧画面,经过调试最终定位到问题。问题出在有些前端设备输出的视频流时间戳不标准,没有严格单调递增。VideoJS接收的的第二个视频包的时间戳如小于第一个视频包的时间戳即判断视频源异常。通过修改前端设备时间戳问题得以解决。不得不说的是作为播放器VideoJs的容错机制真的很一般。如.
2021-04-02 11:10:43 700
原创 GB28181平台对接记录-定位视频无法播放问题
GB28181平台对接记录-定位视频无法播放问题 发生了过多次这样的事情,于是决定写一篇简短的博客来说明这个问题。以后有客户再问,可以邀请他直接看这篇文章,清楚明了点。 我们的国标平台作为国标上级平台经常会跟海康、大华、东方网力平台做对接(他们是国标下级平台),部署的环境基本都在内网(大部分是在公安系统内部,也有在政府部门,还有就是在客户的公司)。客户在在使用我们国标平台时有时会出现视频播放不了的情况,基本上前期客户一看不到视频就会想到是我们平台的问题。原因之...
2021-04-02 11:09:50 366
原创 Hls流播放延时
碰到好几次这种问题,总结下,要不时间久了可能就忘记了。最近项目中遇到Hls视频播放延时达7,8秒。最近服务版本进行了更新,起初以为是新版本产生的问题(正常情况Web端播放Hls的延时在3-4S)于是用之前发布的版本进行测试,延时也在7,8秒,并且Web端打开视频很慢大约10S。排除了服务器的问题后怀疑问题可能出在Chrome浏览器版本上(客户端测试机器最近重装了系统)。将chrome浏览器切回到原来的版本进行测试,视频画面延时仍然是7,8秒。 既不是流媒体服务的问题,...
2021-04-02 11:09:03 1032
原创 Html5 播放实时音频流
Html5 播放实时音频流项目需求 Web端播放实时音频流,折腾了两天后问题得以解决。记录下开发调试过程,方便后来者。首次想到是利用Audio标签,Audio标签可以直接播放MP3格式,服务端将实时音频流编码成MP3格式通过Http方式传给Web端即可,前端代码如下所示: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <!DOCTYP.
2021-04-02 09:46:27 2634 1
原创 Linux环境下 动态库so 中全局变量冲突问题
Linux环境下 动态库so 中全局变量冲突问题项目调试过程中遇到Linux环境下动态库so中全局变量相互冲突问题,问题具体描述如下:单个进程 A运行时需要加载两个动态库B.so与C.so ,这两个动态库均链接了静态库D.a。静态库D.a存在全局变量且只能初始化一次。进程A加载B.so 正常,加载C.so 提示D.a 初始化失败。失败的原因是C.so 使用B.so连接的D.a中全局变量。解决的办法是编译生成B.so与C.so 时加上编译 选项-Wl,-BsymbolicBsym...
2021-04-01 14:17:59 1408
原创 GB28181语音对讲
GB28181语音对讲前段时间将音频对讲功能集成我们国标平台,踩些坑记录下来,方便后来人。 GB28181-2016语音对讲没有明确规定流程,各厂家按自己的理解进行实现。先说海康的,毕竟海康是这个行业的龙头老大。海康摄像机接收音频的流程如下图1所示: 图1.海康设备接收音频流流程。各信令抓包如下: ...
2021-04-01 14:17:12 1971 4
原创 Video.js 截图 Failed to execute ‘drawImage‘ on ‘CanvasRenderingContext2D‘
Video.js 截图 Failed to execute 'drawImage' on 'CanvasRenderingContext2D' 流媒体服务有一项功能是抓图,也就是从正在播放的视频流中获取图片。这个功能可以在服务端实现,具体的思路也比较简单从视频流中获取一帧关键帧,解码后保存成一张图片并推送给请求客户端就可以了。服务端实现简单但存在一个缺点-:实时性不高。经常抓到的图是数秒以后的图片。其原因是客户端有播放延时,一般情况下公网下Web客户端播放rtmp及rtsp流延时在1-2..
2021-04-01 14:13:58 2997
原创 tomcat8 注册成服务后接sql数据失败
tomcat8 注册成服务后接sql数据失败Web Server 使用了spring boot 框架,前端使用的是vue 数据库使用的sqlite 登录用了cas。发布程序后通过tomcat8 bin目录startup.bat 脚本启动tomcat,服务运行正常。 将tomcat8注册成服务后运行程序登录主页面时提示sql数据连接失败。失败原因是 cas 及spring boot 配置数据库连接均用了相对路径。需要修改成绝对路径,具体的修改处如下:1. webapps\cas\WEB-.
2021-04-01 14:13:01 184
原创 linux 下 定位内存泄漏 valgrind
linux 下 定位内存泄漏 valgrind 排查项目中遇到的内存泄露问题,用到valgrind工具,记录下具体的用法以及注意事项,以备后用。首先要明确的是valgrind 是可靠的:刚开始使用valgrind测试出一些内存泄漏点,通过代码发现及日志跟踪,发现流程上“没有问题”,一度怀疑valgrind 是不是报告假消息。后来所有报出来的泄漏点均证实确实存在泄露。 下面介绍下valgrind基本使用方法: 如果系统没有安装valgrind,首先得安装下,我们测试的系统是Ub...
2021-04-01 14:11:52 209
原创 Linux 下手动安装openssl
Linux 下手动安装openssl项目中用到的openssl是1.0,部署项目时有些Linux自带的openssl版本是1.1,于是需要将已安装版本卸载掉,再手动安装1.0版本。基本步骤如下:1.卸载 apt-get purge openssl rm -rf /etc/ssl2.安装 wget --no-check-certificatehttps://www.openssl.org/source/old/1.0.0/openssl-1.0.0.tar.gz tar xzf.
2021-04-01 14:11:09 366 1
原创 编译Android版本的Poco库
编译Android版本的Poco库项目需要在android平台使用Poco库,花了些时间成功编译,记录下来以备后用。 编译库总是跟版本有关:编译主机系统为Ubuntu16.04 64位,Poco的版本为1.9.0,Android ndk版本为r17c。 首先配置系统环境变量,执行命令sudo gedit /etc/profile 在文件末尾加上export NDK=/home/wgg/Libary/android-ndk-r17cexport ARMGCC=/h...
2021-04-01 14:10:13 496 1
原创 编译Android版本PJisp2.8
编译Android版本PJisp2.8项目需要在android下使用pjsip库,花了些时间完成了编译。记录下来以备后用。 编译机器系统版本Ubuntu16.04 64位,pjsip版本是2.8,android ndk版本是r17c。 首先配置ndk环境,管理员权限打开/etc/profile添加如下内容: 1 2 3 4 5 6 7 8 9 export NDK=/home/wgg/...
2021-04-01 14:08:54 76
原创 Android ndk 编译提示stdin ,stdout, stderr undefine reference
Android ndk 编译提示stdin ,stdout, stderr undefine reference 这个问题在编译Anddroid版本的PJSip库出现,找了很长时间的原因,记录下来,前事不忘,后事之师。 编译主机系统版本是Ubuntu16.04 64位,Android ndk版本为r17c,PJSip库版本为2.3。PJSip2.3的configure-android文件与Android ndk r17c 不匹配,参考了网友的帖子修改后配置成功(后面会将配置文...
2021-04-01 14:07:48 1365
原创 Android Jni 调用 Poco SharedPtr 阻塞
Android Jni 调用 Poco SharedPtr 阻塞最近有个项目需求 要在Android Jni层 处理http消息,于是尝试将Poco库移植到Android利用PocoNet接收发送http消息。Poco库移植到Android出现一个问题:定义类型为Poco::JSON::Parser的变量后发生了阻塞(后面的日志不打印了)。这个问题排查很久,最后定位到 SharedPtr 出了故障。Poco库实现了自己的SharedPtr (共享指针),源代码实现比c++11标准库shar.
2021-04-01 14:05:59 232
原创 Video.js 源码浅析
Video.js 源码浅析 项目中PC web端播放Hls流用到Video.js,使用过程中出现多种问题,例如视频打开失败、视频卡顿、无缘无故视频播放停止等。于是花了半天的时间研究了下video.js ,耕耘过总要留下点痕迹,以后再研究会方便点,要不几个月过后,一点影子都记不得了。 我看的video.js版本是7.8.4 总共58000多行,半天的时间将Video.js代码所有的逻辑理清楚 对于一个专业后台服务开发来说非常困难,我也只找到了video.js 部分...
2021-03-25 10:58:12 692
原创 H5 播放Hls
H5 播放Hls 移动端播放Hls可以直接利用 H5 ”Video“标签,代码很简单,示例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <!DOCTYPE html> <html lang="en"> <head> ...
2021-03-25 10:56:39 705
原创 GB28181结束Invite请求
GB28181结束Invite请求 GB28181协议基于Sip,通过Bye消息结束Invite请求,需要注意的时Bye消息中要求不仅仅Call-id与Invite消息相同,还要求tag信息正确。下面看一组正常的抓包: 图1. Invite 请求 ...
2021-03-25 10:54:57 650
原创 GB28181 下级平台(设备)实现
GB28181 下级平台(设备)实现 本文主要介绍GB28181 下级平台(设备)实现的基本内容,适合初入门同学,老司机可略过。首先需要知道GB28181 上、下级关系,比如两个平台A和B,如B需要从A获取视频流,则B是上级平台,A是下级平台。另外需要清楚国标下级平台是广义的,复杂的视频平台可以是国标下级平台,支持国标NVR可以称为国标平台,支持国标的摄像机也可以称为国标平台。 国标下级平台概率清楚后,接下来需要了解的是国标下级平台实现的功能。1. 注册...
2021-03-25 10:52:49 2709
转载 国标 GB28181 平台 视频对接
国标GB28181对接视频流 今天抽空写下以GB28181的方式获取摄像机视频流以备后用,同时也希望能帮助到正着手开发GB28181对接视频的同学,这块的资料实在不多。今天讲的内容不涉及到平台对接,平台对接下次有时间再讲,平台对接相对更麻烦点。通过GB28181获取摄像机视频流,首先需要摄像机支持GB28181,如何知道摄像机是否支持GB28181协议呢?请看下图: ...
2021-03-25 10:47:08 6557 3
原创 window下编译ffmpeg
windows 编译ffmpeg 搞过很多次,每次总是磕磕碰碰,从头到尾不能一直顺利,浪费一些时间。终究起原因,都是当时记得,过段时间就忘了。好记性不如烂笔头,大好周末晚上,闲暇无事,记录最近一次编译的整个过程,以备不时之需。一. 安装MinGW从google上可以搜索到MinGW安装包mingw-get-setup.exe,下载到本地磁盘,安装路径选择
2016-06-15 13:10:46 302
cg28181device2.0.apk
2021-02-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人