自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(683)
  • 资源 (3)
  • 收藏
  • 关注

原创 TortoiseGit小乌龟在gitlab配置ssh免密

注意,如果还是不能推送或者免密,请重新删除密钥,从头开始试试,我一开始就是不行,后面重新执行一遍好了。2)右击快捷方式,在目标的地方,把含有私钥信息的 ppk 文件路径追加上去,注意是追加。1)右击 pageant.exe ,然后生成快捷方式。那么,此时推送或者拉取代码就不需要再输入密码了。打开后保存为private.ppk。

2024-08-05 10:29:08 424

原创 音频采集-windows采集-----05-----obs源码wasapi模块分离demo

环境:系统:windows。编译器:vs2022。依赖库:Avrt.lib。

2024-05-30 11:12:35 316

原创 音频采集-windows采集-----04-----obs源码wasapi模块分析

WASAPISource类支持采集扬声器和麦克风。Input,其中:● Input:代表采集麦克风。● DeviceOutput:采集电脑的扬声器。● ProcessOutput:暂未研究。可以先忽略。在下面分析obs的WASAPISource类时,我们以采集扬声器即SourceType=DeviceOutput,并且以线程采集为例进行讲解。

2024-05-30 10:46:48 1253

原创 音频采集-windows采集-----03-----wasapi简单demo

● 当程序启动时,电脑没有播放音频的话,是会阻塞在WaitForMultipleObjects()函数的,当我们播放一个带有音频的文件时,那么程序此时采集到数据。● 本程序采集到的数据,先会缓存到一个大的数组,最后采集到指定的大小时,退出while,然后保存为wave文件。以采集声卡为例子(即采集系统扬声器),采集麦克风的暂时没试过,大家可以自己调试。音视频流媒体资料领取和开发合作,加qq:1282840736。系统:windows。编译器:vs2022。

2024-05-30 09:55:43 308

原创 音频采集-windows采集-----02-----wasapi主要函数介绍

wasapi是windows com组件的接口,所以需要进行com组件的初始化。

2024-05-30 09:38:53 1148

原创 音频采集-windows采集-----01-----技术框架选用

在Windows操作系统上,音频处理技术主要是采用微软提供的相关API,主要有三种:Wave系列API函数、DirectSound、Core Audio。我们简单的对以上接口从对操作系统版本的支持,是否支持声卡录音等方面加以说明。

2024-05-30 08:59:21 487

原创 python基础----11-----闭包、装饰器、单例、工厂、多线程、socket、正则表达式、递归

例如,下图是使用全局变量,当别人导入该包,是可以得到该全局变量account_amount,然后进行修改,那么这样你的金额就有风险了。使用闭包代替。在讲闭包之前,首先先讲nonlocal的作用。nonlocal的作用是,要想在内部函数修改外部函数的变量值,需要在内部函数中使用nonlocal声明该变量,才能使用。例如,当我们注释掉nonlocal关键字,会报错:上面了解nonlocal后,我们使用闭包实现ATM小案例。

2023-06-11 12:23:55 1502

原创 python基础----10-----python操作mysql

对于SQL章节前言->SQL_DQL_排序分页的课程,这里不做记录,因为都是讲MYSQL本身的内容,与python无关。当然,接下来的课需要用到mysql,所以大家需要自行下载,这并不难。

2023-06-09 14:49:36 1141

原创 python基础----09-----类、对象、魔法方法、封装、继承、类型注解、多态、数据分析案例

说白了就是类的实例化,类是一个抽象层的定义。例如下面class Student就是定义的一个类,它是抽象层,然后stu_1 = Student(),我们根据类创建了一个对象,就是对类的实例化,这个实例化对象我们是可以操作的。

2023-06-09 10:57:23 1047

原创 python基础----08-----json、pyecharts模块介绍以及折线图、地图、柱状图的绘制

pyecharts模块 :如果想要 做出数据可视化效果图,可以借助pyecharts模块来完成。概况:Echarts是个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可.而Python是门富有表达力的语言,很适合用于数据处理.当数据分析遇上数据可视化时pyecharts诞生了。官网:pyecharts.org。可以选择语言进行查看pyecharts的文档。pyecharts还有一个画廊功能:gallery.pyecharts.org。

2023-06-08 18:14:01 1421

原创 python基础----07-----异常、模块、包

再同级文件下创建my_modle1.py。注意事项:1)引入多个模块存在同样的函数名的问题:如果有两个模块(引入别人的),分别是模块1,模块2,都有同样的函数名my_test(a, b),当在自己的模块(称为模块3)import了模块1和模块2,那么my_test是使用最后导入的那个模块的函数,因为在python会覆盖。例如下图,模块2的my_test在后面导入,所以my_test(1, 1)调用的是模块2的函数。2)测试模块问题:解决方法看下图。

2023-06-08 11:21:56 655

原创 python基础----06-----文件读写追加操作

思考:计算机只能识别: 0和1,那么我们丰富的文本文件是如何被计算机识别,并存储在硬盘中呢?答案:使用编码技术(密码本)将内容翻译成0和1存入。常见编码有UTF8,gbk等等。不同的编码,将内容翻译成不同的二进制。

2023-06-06 21:21:43 1973

原创 python基础----05-----函数的多返回值、函数的多种参数使用形式、函数作为参数传递、lambda匿名函数

缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)。注意,myfunc2的name="Hc"无法作为缺省参数,想要作为缺省参数,需要放在gender后面。位置参数调用函数时根据函数定义的参数位置来传递参数,传递的参数和定义的参数的顺序及个数必须一致。函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序。作用:当调用函数时没有传递参数,就会使用默认是用缺省参数对应的值。

2023-06-05 21:03:07 611

原创 python基础----04-----函数、数据容器(列表list、元祖tuple、字符串str、集合set、字典dict,包括容器序列的切片操作)、容器之间的转换、容器sorted排序、字符串大小比

3"""如果函数没有使用return语句返回数据,那么函数有返回值吗?实际上是:有的。Python中有一个特殊的字面量: None, 其类型是: <class ‘NoneType’>无返回值的函数,实际上就是返回了: None这个字面量。None作为一个特殊的字面量,用于表示:空、无意义,其有非常多的应用场景。用在函数无返回值上。用在if判断上。在if判断中,None等同于False,一般用于在函数中主动返回None,配合if判断做相关处理。用于声明无内容的变量上。

2023-06-03 18:03:39 148

原创 python基础----03-----if语句、while、for循环、range语句、continue和break

定义变量存储布尔类型数据:变量名称 = 布尔类型字面量。布尔类型不仅可以自行定义同时也可以通过计算的来。也就是使用比较运算符进行比较运算得到布尔类型的结果。在C/C++中,比较运算符称之为关系运算符。see。

2023-05-31 23:05:00 1332

原创 python基础----02-----字面量、变量、数据类型及其转换、标识符以及字符串、数据输入(input语句)

单行注释:以#开头,#右边的所有文字当作说明,而不是真正要执行的程序,起辅助说明作用。if __name__ == '__main__' : # 我是一个单行注释多行注释:以一对三个单双引号引起来(’ ’ ‘注释内容’ ’ ’ )(" " " 注释内容" " ")来解释说明一段代码的作用使用方法。我是多行注释''' #或者 """我是多行注释"""注释是代码中的解释型语句,用来对代码内容进行注解。注释不是代码,不会被程序执行。变量的名字。方法的名字。类的名字。等等。

2023-05-30 20:53:48 951

原创 python基础----01-----环境搭建

这里选择windows版本的3.10.11,注意win7无法使用这么新的版本,需要选择低一点版本的安装包。pycharm是一个ide,方便我们编写python代码。首先下载安装包,网址为。

2023-05-28 12:10:21 944

原创 ONVIF协议网络摄像机(IPC)客户端程序开发使用ONVIF框架代码(C++)生成静态库04-->Windows

这里还是要提一点,为啥onvif开发要生成库比较好,因为使用gsoap生成的onvif源码是非常大的,如果不生成库,那么你每次更改自己的代码,即使onvif的源码没改变,每次编译都要4-8分钟,所以是非常浪费时间的,所以需要生成库进行开发。为什么要使用cmake文件进行编译onvif源码生成静态库呢,因为cmake跨平台,方便Linux和Windows,在Linux下它会直接生成.a文件,在Windows下,它会先生成VS的项目,然后再由用户打开该VS项目进行生成静态库。4)先创建一个build目录。...

2022-08-18 14:19:47 2791 5

原创 FFmpeg调用avformat_open_input时返回错误 -22(Invalid argument)

FFmpeg

2022-07-02 10:33:03 4176 2

原创 go语言实战-----32-----(网站)架构分析、要点分析、模块分析、前后端解耦---REST API设计,包括用户、视频、评论--- 数据库设计,包括用户、视频、评论、会话、待删除视频

go流媒体网站技术要点1)前后端分离的系统架构设计。2)RESTful风格API设计与实现。3)Go实现web服务。4)系统的服务化解耦。5)go的channel和并发模型的实践。6)使用go原生template完成web UI的实现。1 前后端分离的系统架构设计1.1 总体架构:1)客户端先发送请求到前端服务进行处理。2)前端服务收到请求后,直接转发或者包装一下请求,然后通过API接口层发送到后端的不同服务。3)API接口层,可以认为是一个中间层。负责转发、调度给不同的后端服务

2022-04-23 11:31:16 1057

原创 go语言实战-----31-----流媒体架构设计之直播架构、音视频通话(常见 流媒体协议 解释)

一 直播架构直播架构例如以某主播在某直播平台直播为例:1)首先向平台请求直播url。2)主播得到url。3)然后主播开始往该url推流,实际最终是推流至流媒体服务器。4)此时,当有用户观看时,即拉流,那么拉流成功。可能网页端还会有其它功能,例如主播直播相关信息等等业务。1 直播框架示例12 直播框架示例2-某直播学院框架3 直播架构-基本逻辑上面两个图主要是按业务功能来区分模块。而下面这幅图可能更倾向于按代码区分模块。4 常见流媒体协议1)RTP实时传输协议(Real

2022-04-21 22:15:46 5622

原创 go语言实战-----30-----token机制微信公众号签名验证的方法、XML解析,CDATA解析、交换协议、接收消息协议、被动回复消息协议、正则表达式

一 token机制微信公众号签名验证的方法1 token机制token机制就是使用一个token(通常是一个字符串,长度没有特别限制,一般是10字节或者16字节),然后按照一定的算法生成签名,然后对接的双方通过这个签名进行判断,相等则token认证成功,不相等则认证失败。下面将以微信公众号的token机制算法为例进行讲述。1.1 token算法微信公众号token的验证方法,实际在验证token时,不会直接验证token,而是验证由token生成的签名,因为直接验证token,就需要进行传输,这样

2022-04-19 21:44:20 1675

原创 go语言实战-----29-----公众号开发逻辑、注册、权限处理、消息回复

一 微信公众号开发逻辑下面按照以下几点进行讲解微信公众号开发逻辑。1)注册公众号。2)开发者权限。3)微信公众号后台接口权限。4)公众号消息回复。5)服务器配置。1 注册公众号注册地址: https://mp.weixin.qq.com/cgi-bin/registermidpage?action=index&lang=zh_CN&token=。选择订阅号。不过选择服务号应该也行,学习的话使用订阅号就行了。填写密码,然后选择中国大陆。然后它会提示让你再选择一次类型,

2022-04-17 15:32:20 945

原创 go语言实战-----28-----Gin、rest full api和mysql实现增删改查

一 Gin、rest full api和mysql实现增删改查gin_restful的项目目录。每个目录的意思描述:对gin_restful项目进行mod处理:# 1. 去到自己的gin_restful项目目录路径下。cd xxx\gin_restful\# 2. 如果之前以及mod init,可以删除这些文件。主要是go.mod、go.sum。rm go.*# 3. 进行mod初始化。# 注意:后面跟着的工程名gin_restful请设置成对应所在的根目录名字,否则在build时会报

2022-04-16 18:34:31 1477

原创 go语言实战-----27-----mysql增删改查、预处理、事务、第三方库sqlx

一 mysql增删改查Mysql准备工作首先我们建库建表,以方便进行测试。运行下面sql文件:CREATE DATABASE IF NOT EXISTS go_test;use go_test;CREATE TABLE `user` (`id` BIGINT(20) NOT NULL AUTO_INCREMENT,`name` VARCHAR(20) DEFAULT '',`age` INT(11) DEFAULT '0',PRIMARY KEY(`id`))ENGINE=InnoDB

2022-04-13 22:14:22 1270

原创 go语言实战-----26-----简单Web模板

一 简单Web模板在http服务器使用简单Web模板可以方便我们快速进行web相关的开发。例如给多个用户进行邮件的发送,一些程序的报警信息等等,这时模板的便捷性就体下出来。package mainimport ( "fmt" "html/template" "net/http")// 全局的html模板变量var myTemplate *template.Templatetype Result struct { output string}// 实现Write方法,提供给i

2022-04-12 18:11:28 555

原创 go语言实战-----25-----HTTP编程get/post/head、表单处理、panic处理

一 HTTP编程get/post/head1 HTTP编程1) Go原生支持http,import(“net/http”)即可。2) Go的http服务性能和nginx比较接近。3) 几行代码就可以实现一个web服务。1.1 HTTP常见请求方法http常见请求方法:1)Get请求。2)Post请求。3)Put请求。4)Delete请求。5)Head请求。更详细点:HTTP/1.0定义了三种请求方法:GET、POST、和HEAD方法。HTTP/1.1新增了五种方法:OPTIO

2022-04-12 16:29:22 2799

原创 docker基础篇-----07-----Docker将镜像打包成文件、重新上传到Docker、配置容器开机自启、添加脚本使程序伴随容器开机自启(C++开发常用流程)

1 编写Dockfile首先我们先使用Dockerfile生成一个自己想要的镜像。FROM ubuntuMAINTAINER tyy<tyy@126.com>RUN apt-get update && apt-get install sudoRUN sudo apt-get install -y vim# net-tool include ifconfig,netstat so on...RUN sudo apt-get install -y net-tools

2022-03-18 11:48:33 2123

原创 docker基础篇-----06-----Docker常用安装、本地镜像推送到阿里云

参考文章:【学习笔记】尚硅谷周阳老师的Docker教程学习笔记。一 Docker简介1. 简介为了解决在开发环境可以运行程序,但是部署到实际业务环境后无法运行的情况,docker技术应运而生。docker容器技术可以将程序需要的环境、系统、配置、数据等程序需要的运行环境保存下,这样部署到另一台服务器后,也能正常运行。docker官网:https://www.docker.com/。docker中文官网:https://www.docker-cn.com/。2. Docker与传统虚拟化方式的不同

2022-03-14 21:13:53 1938

原创 docker基础篇-----05-----什么是DockerFile、DockerFile常用保留字、DockerFile案例

参考文章:【学习笔记】尚硅谷周阳老师的Docker教程学习笔记。一 DockerFile1. DockerFile(1) 是什么Dockerfile是用来构建docker镜像的构建文件,是由一系列命令和参数构成的脚本。Dockerfile定义了进程需要的一切东西。Dockerfile涉及的内容包括执行代码或者是文件、环境变量、依赖包、运行时环境、动态链接库、操作系统的发行版、服务进程和内核进程(当应用进程需要和系统服务和内核进程打交道,这时需要考虑如何设计namespace的权限控制)等等。

2022-03-14 21:05:02 310

原创 docker基础篇-----04-----命令添加容器数据卷、dockerfile添加容器数据卷、容器间数据卷共享(--volumes-from)

参考文章:【学习笔记】尚硅谷周阳老师的Docker教程学习笔记。一 容器数据卷1. 容器数据卷(1) 什么是容器数据卷容器删除后数据自然也就没有了,所以用卷来保存数据。容器数据卷功能是持久化和数据共享。 卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File Syste提供一些用于持续存储或共享数据的特性。(2) 容器数据卷的特点1)数据卷可以在容器之间共享或重用数据。2)卷中的更改可以直接生效。3)数据卷中的更改不会包

2022-03-14 21:01:15 2849

原创 docker基础篇-----03-----联合文件系统、docker镜像加载原理、 镜像的特点和优点、容器副本commit生成新镜像

参考文章:【学习笔记】尚硅谷周阳老师的Docker教程学习笔记。一 Docker镜像1. 联合文件系统(UnionFS)UnionFS(Union file system)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下,UnionFS是docker镜像的基础,镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统该,

2022-03-14 20:56:42 1778

原创 docker基础篇-----02-----docker帮助命令、镜像命令、容器命令

参考文章:【学习笔记】尚硅谷周阳老师的Docker教程学习笔记。一 Docker常用命令1. docker帮助命令(1) 查看docker版本:docker version(2) 查看docker信息:docker info(3) docker帮助命令:docker --help2. docker镜像命令2.1 列出所有镜像docker images:列出本地主机上的镜像,镜像由镜像名:tag唯一标记,tag可认为是版本号。docker images -a:列出本地所有的镜

2022-03-14 20:49:30 1139

原创 docker基础篇-----01-----docker简介、安装、配置阿里云镜像加速器

参考文章:【学习笔记】尚硅谷周阳老师的Docker教程学习笔记。一 Docker简介1. 简介为了解决在开发环境可以运行程序,但是部署到实际业务环境后无法运行的情况,docker技术应运而生。docker容器技术可以将程序需要的环境、系统、配置、数据等程序需要的运行环境保存下,这样部署到另一台服务器后,也能正常运行。docker官网:https://www.docker.com/。docker中文官网:https://www.docker-cn.com/。2. Docker与传统虚拟化方式的不同

2022-03-14 20:41:28 1285

原创 redis专题-----11-----redis订阅发布以及stream

参考文章:Redis发布订阅模式(publish/subscribe)。一 概念1)为了支持消息的多播机制,redis 引入了发布订阅模块。Redis发布/订阅(Pub/Sub)是一种通信机制,将数据推到某个信息管道中,其他客户端可通过订阅这些管道来获取推送信息,以此用于消息的传输。2)发布者发布的消息分到不同的频道,不需要知道什么样的订阅者者订阅。订阅者对一个或多个频道感兴趣,只需要接收感兴趣的消息,不需要知道什么样的发布者发布。主要目的是解除消息的发布者与订阅者之间的耦合关系。3)发布者和订

2022-03-08 22:37:13 1738

原创 redis-----10-----redigo管道以及事务-脚本事务

1 lua 脚本redis中加载了一个 lua 虚拟机,用来执行 redis lua 脚本。redis lua 脚本的执行是原子性的,当某个脚本正在执行的时候,不会有其他命令或者脚本被执行。lua 脚本当中的命令会直接修改数据状态。注意:如果项目中使用了 lua 脚本,不需要使用上一篇的命令事务。redis的一些操作脚本的命令。# 从文件中读取 lua脚本内容 # cat test1.lua | redis-cli script load --pipe# 1. 加载 lua脚本字符串 生

2022-03-04 18:23:22 663

原创 redis-----09-----redigo管道以及事务-命令事务

1 Redis 网络事件处理redis 是单线程处理逻辑,网络事件处理以及命令处理都是在这个线程当中进行的。如果是只存在一个连接,那么不管你输入多少命令,操作都是具有原子性。但是如果多个连接下,某个连接想按照原子性的执行多条redis命令,那么可能会被其它连接的命令插队,从而使这多条连接无法原子性执行。简述Redis网络事件处理:我们知道,网络双方连接是全双工的,每个连接下,双方各自有一对读写缓冲区(即下图的r、w)。连接1可能是我们程序的某个线程1的连接,连接2可能是另一个线程的连接,也有可能是其

2022-03-03 22:19:42 782

原创 redis-----08-----redigo管道以及事务-管道

1 Redis 管道正常的情况下,redis是请求响应模式,一条请求后那么正常就会返回一个响应,例如上图。但是只存在这种情况是无法满足我们开发的需求的。所以redis给我们提供了管道。redis的管道(pipeline )相关特点:1)redis的管道pipeline配合事务,可以实现原子操作,保证一次执行多条命令。2)它一次可以发送多次请求,然后返回多个响应,这个响应的顺序会依照你请求的顺序进行返回。3)管道作用:一次可以发送多条请求,并可以一次返回多个响应,例如下图,所以节省大量的网络耗时

2022-03-02 21:57:30 934

原创 redis-----07-----redigo基本命令操作(主要讲如何让go的struct、map展开成redis的参数,以及使用struct获取redis返回的key-value批量数组)

1 请求回应模式redis 与 client 之间采用请求回应模式,一个请求包对应一个回应包。但是也有例外,pub/sub 模式下,client 发送 subscribe 命令并收到回应包后,之后被动接收 redis 的发布包。所以若需要使用 pub/sub 模式,那么需要在 client 下创建额外一条连接与 redis 交互。2 Redis 协议图redis 协议采用特殊字符( \r\n )来分割有意义的数据,redis 使用的是二进制安全字符串(用长度来标识字符串的长度),所以 redis

2022-03-01 22:29:40 1989

原创 redis-----06-----redis-zset结构以及应用

1 zsetzset(有序集合)是Redis中最常问的数据结构。这个有序集合类似C++的set容器,但是底层结构不一样,C++的底层结构是使用RB-tree(红黑树)实现的。而zset不一样,zset使用跳表实现。zset一方面通过set来保证内部value值的唯一性,另一方面通过value的score(权重)来进行排序。这个排序的功能是通过Skip List(跳跃列表)来实现的。利用zset的去重和有序的效果可以由很多使用场景,通常用来实现排行榜。举两个例子:存储粉丝列表,value是粉丝的ID

2022-02-27 13:06:33 6929 2

OpenSSL下载资源

OpenSSL下载资源

2020-11-20

H264文档及MPEG-4视频压缩.zip

H264文档及MPEG-4视频压缩文档。

2020-10-29

mfplat.dll(32位/64位)

windows服务器运行ffmpeg报错,mfplat.dll模块已加载但找不到入口点dllregisterserver。

2020-10-29

空空如也

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

TA关注的人

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