- 博客(24)
- 资源 (8)
- 收藏
- 关注
原创 超低延时直播rtmp推流
项目起源: 改项目主要是基于类qt av的模式,快速集成, 将ffmpeg融入到插件当中, 并提供本地的音频设备和视频设备的查找输出, 并可以采集各类虚拟摄像头, 酷狗直播助手/YY开播/6K Box等助手,有些助手比如酷狗,ffmpeg采集不到640*480的视频,采集模块我更换成webr关键代码int FFRtmpMuter::OpenVECodec(){ hlogi("[%p] Call %s Start.", this, __FUNCTION__); //...
2020-10-05 14:20:16
2358
原创 Qt低延时/可集成嵌入的网络播放器 –soundTouch的使用
背景在观看直播的过程中,保不齐网络出现卡的现象,可能导致音频数据包累积了好几秒的数据,这时候要么丢直接播放新的, 要么直接播放基音, soundTouch可以加速播放并不要变调主要技术点soundTouch 的输入void CXAudioPlay::sound_touch_put(uint8_t *audio_buf, int data_size, int nb){ for(auto i = 0; i < data_size / 2 + 1; i++) { .
2020-07-10 09:22:43
675
原创 Qt低延时/可集成嵌入的网络播放器 --设计初衷
需求做一个类似QtAv的,集成到qt widget中很方便 占用资源小,并且可以集成到多个widget当中去主要技术点使用ffmpeg读取rtmp流 使用 SDL 或者QopenGL渲染视频 使用soundtouch 对声音进行处理 使用libao进行播放项目集成方式 //集成方案,new SRVideoWidget , 将SRVideoWidget 嵌入到已有的widget上面去 SRVideoWidget *m_vo = new SRVideoWidg..
2020-07-09 18:38:17
310
原创 gb 28181的20位编码简介
举例:36030000042000000003设备的20位编码组成国标编码由中心编码(8位)、行业编码(2位)、类型编码(3位)、网络标识(1位)和序号(6位)五个段共20位十进制数字组成。系统编码 =中心编码(8位) + 行业编码(2) + 类型编码(11-13位) + 序号(最后7位)类型编码:常见:200----中心服务器111----DVR118—NVR----不同...
2019-02-15 17:41:35
15268
1
原创 海康和大华NVR 遇到的一些问题
1. 流格式的结构不一样 有些大华设备的流并不是以PS头作为取一帧的前提, 要以Mark位为结束标识有些大华设备的流取一帧要判断下一个ps头,把之前的数据作为一帧 2. 录像目录结构不太一样大华的录像目录并不会给filepath, 海康的会给当前的filepath 交流qq群:227919596 (gb28181交流合作)...
2019-02-15 17:20:08
2968
原创 gb28181 服务对外发布结构
结构将NVR和sip服务器要放在同级域中, 然后其他服务可以在外网,这样可以在外网获取到NVR的流和消息 交流qq群:227919596 (gb28181交流合作) ...
2019-02-15 17:09:29
598
原创 gb28181提供的功能
功能根据项目需要暂时使用了以下功能:一. 跟NVR相关操作1.0获取当前服务器有几个nvr注册进来1.1 通过Nvr 的20位码获取NVR的具体信息二. 跟摄像头相关的操作2.0 获取当前的nvr下有几个camera 网络摄像机2.1 通过Camera的DevID获取camera的具体信息三.获取实时流3.0 获取当前的nvr下某个camera 的流3.1 关闭当前的...
2019-02-15 14:37:40
2281
原创 rtsp简单介绍
一. 介绍Rtsp 即realtime stream protocol,它是应用层协议, 可以控制流的(暂停/继续/后退/前进等), 二. 两种方式分为:1. RTP/AVP/UDP2. RTP/AVP/TCP RTP/AVP stand for RTP A/V Profile 具体采用什么方式由客户端的Setup命令确定需要媒体...
2019-01-29 14:57:04
840
原创 webrtc libjingle worker thread
概述worker thread 可以理解为一种数据流的顺序执行的帮衬, 不会堵塞任务执行。使用 worker thread的类包括ChannelManager,SocketMonitor,P2PTransportChannel 和 属于Port类的对象等。该线程是用于处理大工作量的方法,可能还需要按照顺序执行, 其本质类似工作队列的方式,此线程内的方法可能会处理很长时间,如网络消息等。工作队列参照
2017-09-02 15:22:07
539
原创 intel gpu 解码
背景在linux上使用intel的gpu加速解码h264,根据以往的经验往往需要将intel gpu的demo集成到我们自己代码当中, 但是这样局限性很大, 每一代的gpu加速的修改, 我们代码都需要调整,得不偿失。封装接口接口类class SRH264DecInterface{public: virtual int InitDecode() = 0; virtual int
2017-08-18 17:46:25
2158
1
原创 webrtc sigslot 使用以及源码分析
背景在使用webrtc的时候,我们会看到使用sigslot,那什么是sigslot就是我们所说的信号与槽, qt使用的。 webrtc中的Sigslot 是Sarah Thompson 设计实现的C++ 事件处理的框架,这套框架非常轻量级,全部代码只有一个sigslot.h 文件,其设计也非常出色,最大限度的将事件和处理机制解耦, 并且保证了线程安全. 在WebRTC中, sigslot是其基础的
2017-07-11 14:50:04
861
原创 多进程的一种场景
多进程执行一段程序std::vector<pid_t> pid_vector; pid_vector.clear(); pid_t p; int i = 0; for (i = 0; i < process_no; i++) { //创建进程 p = fork(); if (p == 0 || p == -1)
2017-07-08 11:10:48
392
原创 多线程的一种场景
多线程执行一段程序void* say_hello(void* args){ int tid = *((int*)args); printf("i = %d\n", tid); //printf("process yuv %s h264 %s\n",yuv_input[i].c_str(),h264_output[i].c_str());}// 线程的运行函数,函数返回的是函
2017-07-08 11:09:26
343
原创 intel GPU加速在linux 上测试, 多路编码
背景我使用的机子的配置Intel(R) Core(TM) i5-5250U CPU @ 1.60GHz 4核 8G内存 120G硬盘 测试方式, 使用intelGPU 1080p yuv 数据文件, 读取编码并写到264文件中, 这里涵盖了IO操作测试命令举例suirui@suirui:~/github/intelencode/bin$ ./EncodeVideo ./EncodeVideo
2017-07-07 18:45:21
1684
原创 在linux 环境中封装intel硬编
背景在linux上使用intel的gpu加速编码h264,根据以往的经验往往需要将intel gpu的demo集成到我们自己代码当中, 但是这样局限性很大, 每一代的gpu加速的修改, 我们代码都需要调整,得不偿失。封装接口class H264IntelEncode{public: H264IntelEncode(); ~H264IntelEncode(); int Rel
2017-07-07 14:20:13
614
原创 MediaServerStudioEssentials2017R2版本安装
安装依赖sudo apt-get install -y preload libpciaccess-dev libpthread-stubs0-devsudo apt-get install -y compizconfig-settings-managersudo apt-get install -y subversion git git-svn gcc g++ make cmake nasms
2017-07-07 14:19:23
1196
原创 linux 内核3.14.5 编译成deb
安装需求软件sudo apt-get install -y build-essential kernel-package libncurses5-dev内核的下载网址:www.kernel.orgwget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.14.5.tar.xz解压内核tar -xf linux-3.14.5.tar.x
2017-07-07 14:18:26
3801
原创 开发实现C++ RTMP直播拉流播放器
背景该直播播放器的背景是来源于 《拉流推流服务器设计》的一个分支,它的重点是把拉下来的流进行解码显示播放。设计点要实现跨平台, 目前支持的平台linux和windows要模块化和结构化可以拉各个平台的直播流要音视频同步基于上面的设计点大体的一个结构图这里的音频播放是一个抽象类,windows版本实现是libao,linux版本实现是alsa视频显示用的SDLclass AudioOu
2017-06-24 16:15:47
7277
1
原创 开发实现C++ RTMP直播推流sdk
前言rtmp即Real Time Messaging Protocol(实时消息传输协议)的首字母缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。 目前现在流行的是直播技术, 大部分都是采用该协议;本文档重点用C++开发实现了RTMP直播推流sdk部分,并使之跨平台通用。 简单的结构如下:主要
2017-06-24 16:14:01
6698
原创 拉流推流服务器设计
背景该服务器也是基于一个客户的需求产生的。客户那边使用的是腾讯的直播sdk, 将不同终端的流推到腾讯云平台, 但是又想推到其他平台, 基于此需求,该产品产生了。该产品通讯协议使用的是WebSocket, 客户端可以自己定义可以拉腾讯云平台的直播流并把它推送到其他平台上要实现1对多即一个拉流对应多个推流要实现多对多, 即同时可以多个拉流, 没个拉流又是1对多设计主体结构根据之前的背景,大体的
2017-06-24 16:08:38
4046
原创 librtmp 编译
windows平台Librtmp 目前依赖的库有zlib-1.2.8 和polarssl-1.2.0-gpl, 编译方式:编译 zlib-1.2.8, 官网:http://zlib.net 1、打开“Visual Studio 命令提示(2013)”,为了使用VC2013的缺省系统配置参数; 2、切换目录到zlib-1.2.8\contrib\masmx86,并执行脚本bld_ml32.bat,此
2017-06-24 16:05:31
1223
原创 多线程任务队列MulitiThreadJob实现
一. 背景我们在应用程序中,要完成一些异步工作, 同时在异步工作中又要尽量少用switch case, 这时task任务继承方式就可以达到效果。我们可以在作业队列中分配或添加任务,然后作业队列负责完成任务。这里的工作队列可以是多线程的,也可以是单线程的。本文采用的是多线程的实现,单线程的可以@me。开源:https://git.coding.net/clzhan/MulitiThrea
2017-03-12 15:30:29
2114
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人