自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

秦时小

音视频编解码、流媒体经验记录

  • 博客(72)
  • 资源 (1)
  • 收藏
  • 关注

原创 《ZLMediaKit源码学习笔记》(2)MediaServer作为RTSP转发服务器

学习源码前,我们需要先熟悉如何使用ZLMediaKit提供的测试程序,正好本人手上有宇视摄像头,本节就测试下如何使用MediaServer来转发摄像头的RTSP流。

2022-02-07 22:53:50 4222 8

原创 《ZLMediaKit源码学习笔记》(1)windows下VS2022源码编译

学习源码前,需要先让程序跑起来,本节我们学习下在windows下如何使用Visual Studio 2022来编译ZLMediaKit。

2022-02-03 01:35:07 3824 1

原创 《ZLToolKit源码学习笔记》(16)网络模块之整体框架概述

网络模块主要是对系统网络相关API进行了封装,并提供了易用的TCP服务器、TCP客户端、UDP负载均衡服务器、TCP、UDP会话等基础类。

2022-01-21 21:12:54 3167

原创 《ZLToolKit源码学习笔记》(21)网络模块之TcpClient与Session

本节学习ZLToolKit的TCP客户端封装以及服务器侧收到客户端连接后的Session封装。

2022-01-21 20:25:48 1601 1

原创 《ZLToolKit源码学习笔记》(22)网络模块之UdpServer

服务器模型:与TcpServer类似,使用多线程+epoll (select),一个Serverfd + 多个epoll实例每一个线程都创建了一个epoll实例,并以ET边沿触发模式监听同一个Server fd的读事件,使用EPOLLEXCLUSIVE标志位防止惊群效应,线程阻塞在epoll_wait上等待客户端连接。当有客户端发送数据到Server fd时,针对该客户端创建一个新的会话(新的文件描述符,同样使用ET边沿触发),后续该客户端的数据将不会再发送到Server fd。

2022-01-16 21:13:14 2650 1

原创 《ZLToolKit源码学习笔记》(19)网络模块之套接字封装

套接字抽象封装,包含TCP服务器、TCP客户端(TCP session)、UDP套接字、与EventPoller关联处理描述符事件,数据发送以及接收处理等。

2022-01-15 20:31:05 2002

原创 《ZLToolKit源码学习笔记》(20)网络模块之TcpServer

创建多个子TcpServer对象,这些子TcpServer对象通过Socket对象克隆的方式在多个poller线程中监听同一个listen fd,这样这个TCP服务器将会通过抢占式accept的方式把客户端均匀的分布到不同的poller线程,通过该方式能实现客户端负载均衡以及提高连接接收速度。

2022-01-08 23:41:30 2217 1

原创 《ZLToolKit源码学习笔记》(18)网络模块之Buffer缓存

对原始数据char* data进行封装,提供不同的数据访问方式,用于TCP与UDP的数据收发。

2022-01-01 23:32:45 1466 1

原创 《ZLToolKit源码学习笔记》(17)网络模块之基础接口封装类SockUtil

本部分主要看下sockutil.h和sockutil.cpp两个文件。该模块统一封装不同平台下的网络相关API,作为后续网络编程的基础接口。

2021-12-28 20:42:25 2099 1

原创 《ZLToolKit源码学习笔记》(15)事件轮询模块之事件轮询器EventPoller

一个服务器程序,一般都需要处理三类事件:IO事件、定时事件、信号。而为了方便处理,我们需要统一事件源,比如使用IO复用来管理所有事件。其次,为了实现跨平台,我们需要提供一个平台无关的统一接口,与平台相关的实现在内部完成。比如对于IO复用,linux下有epoll,windows等其它平台有select,这里我们就可以统一封装,对外提供一致的接口。一个事件管理接口,还应该是支持多线程的,本节学习下ZLToolKit中的事件管理工具:EventPoller。

2021-12-25 23:09:41 1421 1

原创 《ZLToolKit源码学习笔记》(14)事件轮询模块之定时器

ZLToolKit的定时器是通过线程+循环判断任务的执行时间是否到达来实现,添加任务时,记录该任务下一次执行时间点,然后把定时任务插入到队列中,在线程runLoop中,检测队列中是否有任务已经到达执行时间点,有则立即执行该任务,否则,把最近将要执行的任务的时间点作为线程的休眠时间。以此循环,线程下一次唤醒后重复执行上述操作。

2021-12-25 15:12:46 1125

原创 《ZLToolKit源码学习笔记》(12)事件轮询模块之整体框架概述

事件轮询模块主要是统一封装了对事件的处理机制,包括管道、网络IO、定时器等。

2021-12-22 23:48:44 930 1

原创 《ZLToolKit源码学习笔记》(13)事件轮询模块之管道的简单封装

管道是进程(线程)间通信的一种常用手段,本节学习下ZLToolKit对管道的封装。

2021-12-21 23:14:41 1076

原创 Qt视频播放窗口叠加透明窗口

本人在做一个视频监控项目时,遇到了透明窗口无法透明的问题,特记录下解决过程

2021-12-20 11:49:33 2868 2

原创 《ZLToolKit源码学习笔记》(11)线程模块之工作线程池WorkThreadPool

WorkThreadPool管理一组EventPoller事件轮询器线程,任务通过分配到不同的EventPoller来执行。

2021-12-19 21:25:09 1349

原创 《ZLToolKit源码学习笔记》(10)线程模块之线程池

基于任务队列(TaskQueue)和线程组(thread_group),实现线程池,线程池中所有线程等待在任务队列上,循环执行:等待任务到来->获取到任务->执行任务。

2021-12-18 23:13:50 1709

原创 《ZLToolKit源码学习笔记》(9)线程模块之任务执行器

任务执行器是一个抽象接口类,定义了一套同步及异步执行任务的接口。

2021-12-17 23:21:28 1370

原创 《ZLToolKit源码学习笔记》(8)线程模块之线程负载计算器

一个线程,要么处于活跃状态,在执行任务,此时占用CPU,要么处于休眠状态,等待任务的到来,此时不占用CPU,ThreadLoadCounter就是用于统计某一段时间内,线程处于活跃状态所占的比率。也可以说是该线程对CPU的使用率。

2021-12-16 20:58:00 1411

原创 《ZLToolKit源码学习笔记》(7)线程模块之线程池组件:任务队列与线程组

在学习线程池之前,先看下线程池的两个基本组件:任务队列与线程组

2021-12-13 19:48:13 1631

原创 《ZLToolKit源码学习笔记》(6)线程模块之整体框架概述

线程模块包括了任务队列、信号量、线程组、线程池等功能封装

2021-12-12 19:58:34 1899

原创 《ZLToolKit源码学习笔记》(5)工具模块之资源池

该部分功能在ResourcePool.h中实现,由shared_ptr_imp、ResourcePool_l、ResourcePool三个类组成。

2021-12-11 23:01:38 1803

原创 《ZLToolKit源码学习笔记》(4)工具模块之消息广播器

系列文章目录《ZLToolKit源码学习笔记》(1)VS2019源码编译《ZLToolKit源码学习笔记》(2)工具模块之日志功能分析《ZLToolKit源码学习笔记》(3)工具模块之终端命令解析《ZLToolKit源码学习笔记》(4)工具模块之消息广播器(本文)前言消息广播器相关功能对应NoticeCenter.h和NoticeCenter.cpp文件。目录系列文章目录前言一、使用二、源码结构分析2.1、事件管理:NoticeCenter2.2、事件分发

2021-11-22 21:09:50 1629

原创 《ZLToolKit源码学习笔记》(3)工具模块之终端命令解析

系列文章目录《ZLToolKit源码学习笔记》(1)VS2019源码编译《ZLToolKit源码学习笔记》(2)工具模块之日志模块分析《ZLToolKit源码学习笔记》(3)工具模块之终端命令解析(本文)文章目录系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言终端命令解析相关功能对应cmd.h和cmd.cpp文件。一、使用使用示例可以参见test_pingpong.cpp和test_shell.cpp,实

2021-11-14 18:23:02 1812 2

原创 《ZLToolKit源码学习笔记》(2)工具模块之日志功能分析

系列文章目录《ZLToolKit源码学习笔记》(1)VS2019源码编译《ZLToolKit源码学习笔记》(2)日志模块分析(本文)文章目录目录系列文章目录文章目录前言一、日志功能的使用1、日志级别2、日志的调用方式二、源码结构分析1、类图2、各模块分析2.1、LogContextCapturer:2.2、LogContext2.3、Logger2.4、logWriter2.5、LogChannel前言日志模块主要是logg

2021-11-06 22:37:08 3015 4

原创 《ZLToolKit源码学习笔记》(1)VS2019源码编译

系列文章目录ZLToolKit源码学习笔记(1):VS2019源码编译(本文)目录一、源码下载二、辅助工具下载1、cmake-gui2、类设计器三、VS2019编译1.通过cmake直接打开2.通过sln解决方案打开一、源码下载下载路径:https://github.com/ZLMediaKit/ZLToolKit二、辅助工具下载1、cmake-gui下载地址:https://cmake.org/files该路径下有cmake的各个版本,.

2021-11-06 14:45:57 3719

原创 线程池设计与实现

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分

2021-06-30 22:54:20 590

原创 SRS流媒体服务器和FFmpeg推流

目录一、SRS服务器搭建二、FFmpeg推流三、VLC拉流播放一、SRS服务器搭建可以在github或者码云下载SRS源码,切换到trunk目录,执行./configure && make编译。可能存在部分3rdparty目录下第三方依赖库.sh文件或者configure文件没有执行权限,可以chmod添加下。编译完成后,启动srs。./objs/srs -c conf/rtmp.conf二、FFmpeg推流ffmpeg -re -i test.fl.

2021-04-28 01:42:42 1154 1

原创 Ubuntu 16.04 SSH连接不上问题解决

第一步,检查是否安装ssh server。如果没有,通过以下命令安装。执行sudo ps -e |grep ssh 回车可以看到sshd,说明已经启动,否则需要开启ssh。root@ubuntu:~# apt-get install openssh-serverroot@ubuntu:~# ps -e |grep sshroot@ubuntu:~# /etc/init.d/ssh start第二步,检查防火墙状态,可能被防火墙拦截,如果开启,可以将其关闭后再测试。我这里是已经关闭的。root@u

2021-04-28 00:27:41 1481

转载 如何更好地理解和掌握 KMP 算法

作者:灵茶山艾府链接:https://www.zhihu.com/question/21923021/answer/37475572来源:知乎角色:甲:abbaabbaaba乙:abbaaba乙对甲说:「帮忙找一下我在你的哪个位置。」甲从头开始与乙一一比较,发现第 7 个字符不匹配。要是在往常,甲会回退到自己的第 2 个字符,乙则回退到自己的开头,然后两人开始重新比较。[1]这样的事情在字符串王国中每天都在上演:不匹配,回退,不匹配,回退,……但总有一些妖艳字符串要花自己不少的时间。上了

2020-06-21 22:09:07 172

原创 ffmpeg源码安装(1):linux

0X00、下载ffmpeg源码我们可以在ffmpeg官网下载源码,下载地址http://ffmpeg.org/download.html,目前最新版本是4.2.2。0X01、生成makefile把下载的源码放到linux系统中 ,我这里是放在/opt/目录下。[root@localhost opt]# ls -ldrwxr-xr-x. 18 root root 4096 5月 8 21:07 ffmpeg-4.2.2进入到ffmpeg-4.2.2目录,内容如下:[root@localho

2020-05-18 23:19:04 547

原创 C# DataGridView控件使用示例

using System;using System.Drawing;using System.Windows.Forms;public class Form1 : System.Windows.Forms.Form{ private Panel buttonPanel = new Panel(); private DataGridView songsDataGridView =

2017-08-22 23:15:57 3899

转载 JSP 获取访问者真正的IP地址

http://www.cnblogs.com/love540376/p/6285620.html?utm_source=itdadao&utm_medium=referral

2017-03-14 16:37:02 365

转载 Apache FileUpload详细介绍

http://www.open-open.com/lib/view/open1338108871261.html

2017-03-10 16:09:37 303

转载 http协议详解

http://www.cnblogs.com/guguli/p/4758937.html

2017-03-09 14:41:22 333

转载 Qt线程与事件循环的正确用法

周末天冷,索性把电脑抱到床上上网,这几天看了 dbzhang800 博客关于 Qt 事件循环的几篇 Blog,发现自己对 Qt 的事件循环有不少误解。从来只看到现象,这次借 dbzhang800 的博客,就代码论事,因此了解到一些 Qt 深层的实现,虽然是在 Qt 庞大的构架里只算的是冰山的一角,确让人颇为收益。        从 dbzhang800 的博客中转载两篇关于事件循环的文章,

2017-03-07 10:43:14 5832 2

转载 文件描述符标志

文件描述符标志执行时关闭标识位 FD_CLOEXEC 的作用首先先回顾 apue 中对它的描述:① 表示描述符在通过一个 exec 时仍保持有效(书P63,3.14节 fcntl 函数,在讲 F_DUPFD 时顺便提到)② 对打开文件的处理与每个描述符的执行时关闭(close-on-exec)标志

2016-12-20 16:17:21 502

原创 vs2012编写和使用动态库

一、编写动态库创建一个常规vc++空项目,在工程属性中,配置属性–>General–>configuration Type处,设置为dll。选择release版,生成解决方案即可。 mydll.h:#define MYDLL_H#define MYDLL __declspec(dllexport)MYDLL void printHello();#endif //MYDLL_H

2016-11-18 10:04:27 478

原创 虚拟盘、逻辑盘、卷的区别

1、虚拟磁盘使用RAID技术组合的多个物理磁盘组称为一个虚拟磁盘。2、逻辑磁盘虚拟磁盘可以在逻辑上再次进行划分,划分出的磁盘称为逻辑磁盘。比如,有4个各100G大小的物理磁盘,通过RAID技术组合成一个虚拟磁盘,这个虚拟磁盘有400G大小,但是操作系统不需要这么大的磁盘,所以,又再可以对这个虚拟磁盘进行划分,将它划分成4个逻辑磁盘,每个各100G大小,这里有一个问题,划分前和划分后

2016-11-04 12:53:37 4942

转载 RAID技术详解

一.RAID定义RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损 失而开发出一定水平的数据保护技术。RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。RAID可以充分发 挥出多

2016-11-03 14:44:57 324

转载 虚拟机桥接、NAT、host-only的区别

简单的说法桥接 通过使用物理机网卡 具有单独ipNAT 把物理机为路由器进行上网host-only 只能与物理机相连 下面是详细的解说VMWare提供了三种工作模式,它们是bridged(bridged模式)、NAT(网络地址转换模式)和host-only(主机模式)。要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式。1.bridged(桥接模式)

2016-08-07 20:10:31 1290 2

C++ Qt学生信息管理系统

由于本人也是新手,知道新手学习不容易,所以传上这个,能用就用吧,就不要分了,ODBC数据源自己配置,用32位的,内有教程,因为我的程序中用的数据源名设为HCHODBC,账户为sa,密码sql2005,所以各位配置时为不影响程序运行,请同上,另外,也可自行将两者都改为你自己的,QQ:1092204850,欢迎新人交流,大婶就别来鄙视我了

2014-12-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除