gb28181
呆瑞
这个作者很懒,什么都没留下…
展开
-
最简单的GB28181视频PS流播放器。
一 从PS流中提取h264和aac。移步:https://blog.csdn.net/qq_39805297/article/details/107083322二 基于ffmpeg解码h264获取rgb图像,解码aac成pcm格式。bool H264Decoder::init(){ av_register_all(); _pCodecContext = avcodec_alloc_context3(NULL); _pH264VideoDecoder = avcodec_find_dec原创 2020-08-31 15:43:00 · 3290 阅读 · 1 评论 -
GB28181学习之路——PS流解复用H264和ACC
上一篇讲了PS中提取视频,今天顺手把音频提取的也做了出来,代码结构也梳理了一下。音频提取的方式和视频是一样的,关于视频的提取方式请移步:GB28181学习之路——PS流解析H264话不多说直接上代码了streamresolver.h:#ifndef STREAMRESOLVER_H#define STREAMRESOLVER_H#include <iostream>#include "common.h"class StreamResolver{public:原创 2020-07-02 14:19:35 · 1787 阅读 · 0 评论 -
GB28181学习之路——PS流解析H264
磕磕绊绊的做了出来,也算为自己留个资料吧。先讲理论再上代码。挑些重点讲。1. 首先就是获取到 rtp 包,rtp包的结构是:rtp包头+payload,payload就是我们要的ps包,rtp包头的长度是12个字节,所以rtp包去掉前12字节就是ps包了。比如这个 rtp 包,跳过12个字节,从00 00 01 ba 开始就是ps包了。2. 找到ps包之后就要从它的格式入手开始解析,ps荷载h264是把一帧帧的数据打包传过来,一个完整的ps包会包含一帧的数据。而h264的帧分为 i 帧和原创 2020-07-01 10:31:00 · 2704 阅读 · 2 评论 -
GB28181学习之路——eXosip获取IP和端口
当设备注册进来时,我们需要记录下设备的IP和端口,以便后续与其进行通信,其实好多地方都可以获取到,但是不一定是准确的,尤其是经过映射的地址更是不好难以捕捉。今天写一下怎么样获取设备的IP和端口,对映射与非映射同样有效。先构造获answer,然后再answer的Via header中取,这时answer中含有映射地址的信息:if (MSG_IS_REGISTER(je->request)){ FLOG ("MSG_IS_REGISTER!\n"); eXosip_lock原创 2020-06-17 17:19:40 · 2277 阅读 · 0 评论 -
GB28181学习之路——eXosip TCP模式
eXosip 的TCP模式与UDP模式大致相同,基本代码如下:bool CSipContact::initialize(){ int i; TRACE_INITIALIZE (6, NULL); m_ctx = eXosip_malloc(); if (m_ctx==NULL) { FLOG("eXosip_malloc failed\n"); return -1; } i=eXosip_init(m_ctx);原创 2020-05-13 09:37:14 · 3691 阅读 · 6 评论 -
GB28181学习之路——再探invite信令规范
最近对接压缩机和nvr设备,出现了很多的问题,原因是之前对接IPC所写的信令不规范,所以这次暴露出了很多问题。wireshark抓的包忘记保存了,懒着抓了,就干吧的写吧。一、sip头proxy、to、contact的国标编码要用通道号的编码。二、invite请求要加subject,值为 (发送者:媒体序列,接受者:媒体序列),发送者是通道编码,接受者有就写,序列号点播第一位为0,历史第...原创 2020-04-27 10:40:02 · 1762 阅读 · 0 评论 -
GB28181学习之路——基于osip的sdp文本解析
话不多说上代码吧 char buff[4096]; sprintf(buff, "v=0\r\n""o=1001 0 0 IN IP4 10.64.49.44\r\n""s=Play\r\n""c=IN IP4 10.64.49.44\r\n""t=0 0\r\n""m=video 5494 RTP/AVP 96 97 98\r\n""a=rtpmap:96 PS/...原创 2020-04-27 10:14:11 · 2254 阅读 · 2 评论 -
GB28181学习之路——SIP报文解析转换
由于某些原因没有用eXosip,于是自己tcpsocket建立连接并解析报文,osip安装的自己找找吧。解析代码如下:#include<osipparser2/osip_message.h>#include<osipparser2/osip_parser.h>int main(){ parser_init ();//必须要有这句话 char t...原创 2020-04-09 09:14:21 · 1752 阅读 · 0 评论