自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

藏经阁

寒江孤影,江湖故人,相逢何必曾相识

  • 博客(405)
  • 资源 (20)
  • 收藏
  • 关注

原创 开源流媒体服务器ZLMediaKit介绍

ZLMediaKit一个基于C++11的高性能运营级流媒体服务框架,跨平台,代码用CMake管理,可以用VS2019, XCode等进行编译。仓库地址 https://github.com/ZLMediaKit/ZLMediaKit

2021-07-25 12:41:48 16

原创 对于Qt跨平台客户端开发的一些看法

一、Qt跨平台开发的一点疑虑Qt能跨平台开发,这是大家都知道的,但是,真的做起来不是那么容易,很多公司的客户端也没也完全用跨平台框架来开发,而是在windows, macOS,linux上各搞一套,比如windows用DuiLlib、Qt、或者自己写的UI框架;macOS则用swift / oc,如果用Qt进行windows和macOS跨平台开发,是要慎重考虑的,最好windows一套代码,macOS尽量用swift/oc来做,很多东西在windows上解决方案很多,用C/C++基本都可以搞定,但是在ma

2021-07-23 20:37:34 859 5

原创 google c++代码规范

Google 开源项目风格指南 (中文版):https://zh-google-styleguide.readthedocs.io/en/latest/英文版:http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml中文版:http://zh-google-styleguide.readthedocs.org/en/latest/google-cpp-styleguide/google c++ 编码规范:http://blog.csd

2021-07-22 22:12:26 56

原创 Qt获取时间秒数,毫秒数,当前时间

代码如下:#include <QCoreApplication>#include <QDateTime>#include <QDebug>#include <QTime> int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); //获取时间秒数 qint64 startSec = QDateTime::currentDateTime().toT

2021-07-20 21:27:22 47

原创 windows cmd设置代理取消代理查看代理

查看代理有时为了翻墙,需要设置代理,打开cmd窗口看看,有没有代理netsh.exe winhttp show proxy取消代理netsh winhttp reset proxy设置代理打开cmd窗口,设置代理变量set HTTP_PROXY=http://127.0.0.1:12345678set HTTPS_PROXY=http://127.0.0.1:12345678如果需要设置用户名和密码set HTTP_PROXY=http://proxy.com:portset HT

2021-07-19 22:43:12 22

原创 CEF win32项目编译问题记录:cef_initialize抛异常和窗口白板无法显示网页

在CEF的工程中有个cef win32项目cefsimple,可以在win32界面上显示网页,自己创建一个win32项目,把那些代码拿过来,然后编译,发现有两个比较坑的问题。一、cef_initialize抛异常cef_initialize抛异常,主要是由于cef的dll依赖了一些资源,我们需要拷贝到exe目录,如下所示:把这些dll和pak文件添加到exe目录就可以编译ok了。程序主要依赖两个lib其它就是include.二、窗口是白板无法显示网页程序可以编译了 ,但是显示的却是白板,没有

2021-07-17 21:24:35 48 3

原创 VS2019编译CEF

  CEF全称 Chromium Embedded Framework (CEF). A simple framework for embedding Chromium-based browsers in other applications.  CEF仓库地址:https://bitbucket.org/chromiumembedded/cef/src/master/  CEF项目下载:https://cef-builds.spotifycdn.com/index.html 支持各个平台,打开该网址

2021-07-14 22:50:52 35

原创 obs源码分析【六】:枚举windows窗口

在做录制时,有时需要指定窗口进行录制,就像视频会议软件,钉钉、腾讯会议都有这个功能,那么是如何让做到的呢,我们在obs的代码里面可以找到,windows里面的枚举窗口用到的API是EnumWindows:BOOLWINAPIEnumWindows( _In_ WNDENUMPROC lpEnumFunc, _In_ LPARAM lParam);根据该方法,我们去查找obs代码, EnumWindows调用的地方:HWND find_window_top_level(enum w

2021-07-14 15:33:50 26

原创 Qt解析json数据json数组

  在做前后端开发时,经常会遇到json数据,C++对于json的解析,方法比较多,常用的有jsoncpp、boost json库等等,大家可以灵活选择。Qt也提供了json的解析方法,本篇博客介绍Qt对json数据的解析。Qt解析简单的json数据  先来一个简单的例子,例如下面的json文件update.json{ "version":"1.31", "platform":"macOS", "env":"dev"}  Qt的解析方法如下:#include <QtCore/QCo

2021-07-13 14:41:49 49

原创 C++ tcp一个服务端对应多个客户端

在tcp编程时,有时服务端需要处理多个客户端的连接,下面给出处理模型,在服务端监听后,写个while循环处理多个客户端的连接.tcp server代码如下:#include <winsock2.h>#include <iostream>#include <thread>using namespace std;//链接socket lib#pragma comment(lib, "ws2_32.lib")//线程处理函数void ThreadFun

2021-07-12 20:34:17 38

原创 webrtc编译错误 KeyError: WINDOWSSDKDIR

windows上编译wrbrtc可能会出现KeyError: 'WINDOWSSDKDIR'这时需要设置windows sdk的路径,例如我的设置set WINDOWSSDKDIR=D:\Windows Kits\10当你在windows上搜索Windows Kits\10时可能会有多个,我也是试了很多次,才找到正确的目录,该目录内容如下不知是否正确,反正我的webrtc用vs2019编译ok了,1144个工程。...

2021-07-09 22:48:17 26

原创 Exception: No supported Visual Studio can be found. Supported versions are: 16.0 (2019), 15.0 (2017)

在windows上编译webrtc时可能出现如下错误:Exception: No supported Visual Studio can be found. Supported versions are: 16.0 (2019), 15.0 (2017).在上面也有提示File "C:/webrtc/src/build/vs_toolchain.py", line 174, in GetVisualStudioVersion ' Supported versions are: %s.' ..

2021-07-09 22:27:09 51

原创 求数组中无重复元素的子数组的最大长度

题目:求数组中无重复元素的子数组的最大长度,子数组的元素必须在原数组是连续的,例如,数组[2, 4, 6, 6, 8,7],最大长度的字数组是[2,4,6]或者[6,8,7].代码:/*计算数组最大不重复元素的子串的长度*/#include <iostream>#include <vector>using namespace std;int findPosVector(vector<int> input, int number){

2021-07-06 21:39:32 15

原创 obs源码分析【五】:音频采集线程

  在第三篇介绍了视频的线程,音频的线程代码也是在那一块儿:if (!ResetAudio()) throw "Failed to initialize audio";  音频线程的创建是在audio_output_open函数中int audio_output_open(audio_t **audio, struct audio_output_info *info){ 。。。 if (pthread_create(&out->thread, NULL, audio_thre

2021-07-05 21:02:54 55

原创 win10编译x264源码

x264源码下载  x264官网:https://www.videolan.org/developers/x264.html  git仓库: git clone https://code.videolan.org/videolan/x264.git安装msys  msys官网 https://www.msys2.org/  下载后直接双击安装即可,我安装到了D:/DevTools/msys64,安装完成后,在msys2.exe窗口执行如下命令:pacman -S make gcc diffut

2021-07-05 20:19:19 25 1

原创 obs源码分析【四】:obs录制的窗口截图与视频编码

  在obs中,录制时,提供了三种窗口截屏方法,enum window_capture_method { METHOD_AUTO, METHOD_BITBLT, METHOD_WGC,};  但是在窗口像素抓取时还是用的BitBlt,选择抓屏的方法:static enum window_capture_methodchoose_method(enum window_capture_method method, bool wgc_supported, const char *c

2021-07-04 22:13:37 92 2

原创 Qt echarts 教程(3):qml echarts 的使用方法

  前面两篇介绍了echarts在qt中的使用,在qml中用法也是类似的,还是要用WebEngineView来显示html, 先看看Qt助手的介绍Import Statement: import QtWebEngine 1.10Since: QtWebEngine 1.0Inherits: Item  如果要使用WebEngineView,则需要 import QtWebEngine 1.10  下面在qml中显示echarts,代码如下:import QtQuick 2.12import

2021-07-01 19:08:57 85 1

原创 Qt echarts 教程(2):qt echarts 数据动态绑定

Qt echarts 教程(1):qt echars的基本使用方法Qt echarts 教程(2):qt echars 数据动态绑定上一篇介绍了qt echars的基本使用方法,本篇介绍如何进行C++ js数据动态绑定。为了弄清楚交互方法,我们从最简单的例子入手line-simple.html,如下所示:html如下:<!DOCTYPE html><html style="height: 100%"> <head> <meta c

2021-07-01 18:06:19 77

原创 Qt echarts 教程(1):qt echarts的基本使用方法

在使用Qt进行项目开发时,有时会遇到数据采集的需求,需要将数据用动态曲线展示,或者饼状图,树状图等,对于这种动态曲线,可以用成熟的组件,例如QCharts, QCustomPlot, QWT等等,也可以自己绘制,这些都是C++的解决方案,在前端领域,则有更优秀的Echarts来实现动态曲线,本篇博客介绍在Qt项目中如何使用ECharts进行数据展示。ECharts简介ECharts是百度的项目,之前的官网是http://echarts.baidu.com几个月前还能打开,现在百度把它交给阿帕奇了,新

2021-07-01 16:39:15 309 4

原创 Qt重载的信号怎么连接

在Qt中经常会有一些信号,参数类型不同,但是信号名字相同,例如QComboBox的信号:Q_SIGNALS: void currentIndexChanged(int index); void currentIndexChanged(const QString &);对于这种重载的信号,用Qt4的connect来写是没问题的,代码如下:connect(ui->comboBox, SIGNAL(currentIndexChanged(int)),this, SLOT(on_Index

2021-07-01 14:45:39 35

原创 Qt与html js交互详细讲解与代码演示

客户端开发,很多时候都需要与web交互,这样做起来更方便,一个html页面,用C++ 程序导进来,在各个端都可以用,这样减少了开发量,还保证了代码的一致性,因为html是跨平台的,只要有浏览器即可,Qt刚好支持这个效果,如果不是用Qt开发,用DuiLib, SOUI等,那就得使用CEF来进行html操作了,这种是很麻烦的,相比CEF,Qt的Web操作更加的方便友好,二者区别如下:(1)CEF编译很麻烦,使用更是复杂;(2)Qt的Web操作是跨平台的,CEF不可以;例如下面的html页面:<!D

2021-06-25 01:25:37 95

原创 Qt实现窗口四周阴影

  在某些时候,产品要求阴影窗口,例如下面的效果  当窗口在白色的背景下,四周就会有阴影。实现方法其实也不难,Qt已经支持的了这种效果,主要是应用QGraphicsDropShadowEffect类,该效果在Qt4.6就已经支持了,Qt助手的解释如下:  A drop shadow effect renders the source with a drop shadow. The color of the drop shadow can be modified using the setColor()

2021-06-22 21:54:22 73

原创 obs源码分析【三】:视频模块线程创建与参数初始化

在录制窗口之前,音视频的一些参数得先知道吧,比如视频的帧率,输出位置,编码方式等,这些是在【设置】里面配置的,在OBS主界面启动的时候,会获取这些这些,mainWindow = new OBSBasic();mainWindow->setAttribute(Qt::WA_DeleteOnClose, true);connect(mainWindow, SIGNAL(destroyed()), this, SLOT(quit()));mainWindow->OBSInit();OB

2021-06-20 23:46:54 83 2

原创 obs代码总体架构图

  最近在找obs资料时,遇到了两张很好的obs代码架构图,对阅读obs代码很有帮助,下面贴出来。  图一  图二  不知哪两位大佬总结的,这两张图,对obs的总结很到位,花了很大的心血。由于是之前提取的图,转载地址已经记不清了。...

2021-06-20 22:10:39 86

转载 基于C++ 11的线程池简单实现

  C++11 加入了线程库,从此告别了标准库不支持并发的历史。然而 c++ 对于多线程的支持还是比较低级,稍微高级一点的用法都需要自己去实现,譬如线程池、信号量等。线程池(thread pool)这个东西,在面试上多次被问到,一般的回答都是:“管理一个任务队列,一个线程队列,然后每次取一个任务分配给一个线程去做,循环往复。” 貌似没有问题吧。但是写起程序来的时候就出问题了。  下面给出线程池的代码  threadpool.h#pragma once#ifndef THREAD_POOL_H#d

2021-06-20 21:58:09 74

原创 C++ emplace_back用法介绍

  C++ 11对容器的push_back, push_front, insert 增加了新的用法,与之对应的是emplace_back,emplace_front, emplace.  emplace的作用是调用构造数,例如下面的代码:#include <iostream>#include <vector>using namespace std;struct Date{ int _year; int _month; int _day;

2021-06-20 21:21:02 147

原创 C++ std::function的使用方法

  std::function是C函数指针的升级版,使C的面向过程与C++面向对象有了较大的区分,看下面的代码:/*std::function的使用*/#include <iostream>#include <functional>using namespace std;//声明function变量,参数为返回值为int,形参是int的函数std::function<int(int)> Func;int fun1(int a){ c

2021-06-20 18:03:07 38

原创 OBS简介与源码分析开篇

  做音视频开发的,对于OBS一定不陌生,还有一些游戏主播对OBS的应用也是相当的熟悉,国内很多音视频直播录制软件也都是参考了OBS代码,毕竟是成熟的框架,直接拿来应用何乐而不为?  obs官网:https://obsproject.com/  obs牵扯的技术太多了,先不谈C/C++编程技巧,来看看obs代码涉及到的一些技术领域:obs的功能主要是音视频采集、编码、渲染、音视频同步、直播推流,要完成这些功能,用到了DirectX、OpenGL、windows核心API、Qt、 ffmpeg、rtmp协

2021-06-18 22:02:53 55

原创 C++ bind用法与代码演示

C++ bind, 有点类似函数指针,但是用法比函数指针更灵活,在绑定的时候可以预设值参数,例如下面的代码:#include <iostream>#include <functional>using namespace std::placeholders;void fn(int n1, int n2, int n3) { std::cout << n1 << " " << n2 << " " << n3 &l

2021-06-18 21:11:13 29

原创 obs源码分析【二】:录制功能剖析

  学obs, 一是看它的代码结构,二是把obs的代码抠出来运用到项目中,这篇先来看看obs的录制功能是如何实现的,先找到录制的按钮  查找recordButton对应的槽函数,Qt客户端项目嘛,简单,槽函数无非就那几种写法,直接来on_recordButton_clicked(), 这种是最简单的,刚好obs就是这种写法,而且主界面上其它的控件槽函数也在当前文件中。  那么去它的cpp源码看看,void OBSBasic::on_recordButton_clicked(){ if (out

2021-06-18 00:19:35 97 2

原创 vs2017编译x265源码

本篇博客介绍如何在windows上用vs2017编译x265源码为sln,在编译x265之前,先得安装vs2017,其次是安装好CMake.x265官网:https://www.videolan.org/developers/x265.html查看官网可知,在ubuntu命令行下执行如下命令即可获取源码:hg clone http://hg.videolan.org/x265如果没有安装mercurial,则会报错,执行如下命令进行安装:sudo apt-get install mercuria

2021-06-17 21:57:11 42

原创 无法执行hg clone怎么办

ubuntu 执行如下指令sudo apt-get install mercurial

2021-06-17 21:11:17 32

原创 WebStorm配置electron启动器

在WebStorm中启动electron项目主要有两种方式,外部命令和脚本,下面分别介绍这两种方法。方法一:extern tools打开file—>setting–>tools—>external tools添加ok后需要重启webstorm在右键菜单才会有external tools选项。然后在项目代码中任意一个文件右键用electron启动即可。方法二:js脚本新建一个run.js文件,在里面写如下代码:var exec = require('child_process'

2021-06-15 21:20:52 36

原创 windows electron开发环境搭建

electron环境安装安装node.js, 下载node.js 直接安装就可以,验证是否安装ok, 执行如下命令查看nodejs的版本node --version注册淘宝仓库npm install -g cnpm --registry=https://registry.npm.taobao.org安装cnpm install -g electron查看electron版本经过以上3步,electron就安装ok了,可以运行 electron -v 查看安装的版本,例如

2021-06-14 21:50:52 35

原创 obs源码分析【一】:main函数

  最近对obs的代码感兴趣了,在obs里也抠了不少功能出来用到项目上,准备把自己的心得记录下来,有兴趣的可以一起留言讨论。  在学习obs源码之前,需要先编译obs的源码,有需要的可以看上一篇,obs项目的编译方法,需要的可以点击【obs编译方法】main函数在哪里  obs的界面是Qt写的,目测没用到QML, 既然是Qt, 那先从main函数开始,如果你是一个新手,在几百个cpp文件中,怎么快速找到main函数呢,ctrl F全局搜索main(  经过查找,可以很快确定是在obs-app里面

2021-06-10 22:07:02 86

原创 vs2019 cmake编译obs源码生成sln解决方案

  obs的编译不是很难,只要代码下的全,环境变量配的ok, 基本都能编译过,我在很多台电脑帮别人编译过,都编译OK了。  obs官网 https://obsproject.com/  obs代码仓库 https://github.com/obsproject/obs-studio  本篇博客介绍如何在win10上用vs2019 cmake编译obs, 先去github上的编译介绍,obs仓库的wiki页面查看各种build简介,不会的直接点这个链接https://github.com/obsproj

2021-06-10 20:58:30 166

原创 Qt如何自适应4k这些高分辨率屏幕

  Qt在开发pc端应用程序时,无法自适应桌面分辨率,比如常用的win10电脑是19201080这种屏幕,而mac是2k屏,25601440,在windows上开发的软件放到macbook或者其它高分屏的屏幕时,Qt UI就会变形,控件的大小和图标就会拉伸缩放,Qt作为跨平台应用开发框架,如果连自适应屏幕都做不到,那真是有点难堪了,其它的界面框架,例如WPF, ImGUI对高分屏是自适应的是框架自己完成的。  其实,Qt还是有方法可以做到自适应屏幕。  先来看一个概念 logicalDotsPerInc

2021-05-25 22:58:59 368

原创 ffmpeg对视频数据进行h264编码为并封装成mp4

ffmpeg抽取视频1.mp4 30秒的rgb数据,指令如下:ffmpeg -i 1.mp4 -t 30 -pix_fmt rgb24 -s 960x640 data24.rgb-t 30表示时间,30秒下面是rgb–>yuv–>h264–>mp4的流程/*ffmpeg视频编码 rgb转mp4*/#include <iostream>extern "C"{ #include <libavformat/avformat.h> #incl

2021-05-24 22:37:00 103

原创 Qt录制音频为pcm并进行ffmpeg aac编码

  Qt提供了音频采集功能,主要涉及到3个类,QAudioFormat,QAudioInput,QIODevice。  在进行音频采集时先用QAudioFormat设置采集参数,然后创建音频输入对象QAudioInput,最后用QIODevice提供的方法进行采集。  查询Qt助手可知在使用Qt音频相关的类时,需要导入multimedia模块:  那么在.pro文件就得添加multimedia:  Qt音频采集代码如下:#include <QCoreApplication>#in

2021-05-23 18:58:52 109 1

原创 Qt枚举目录文件并获取文件名

#include #include #include int main(int argc, char *argv[]){QCoreApplication a(argc, argv);QString dirpath = "F:/Test/";QDir dir(dirpath);QStringList nameFilters;nameFilters << "*.MP4" << "*.flv";//将过滤后的文件名称存入到files列表中QStringList

2021-05-22 14:53:44 58

C# Winform数值实时曲线(完整示例)

C#实现显示实时数据,并形成曲线,保存数据,完整的项目代码

2017-07-01

Qt进度条QProgressBar的使用(详细代码)

详细的工程代码与注释,讲解Qt进度条QProgressBar的使用方法,完整的代码。

2018-05-03

MusicPlayer.rar

该音乐播放器使用Qt开发,代码用QtCreator编写,下载即可使用,主要用QMediaPlayer的一些功能,可以看我的博客讲解。

2019-11-17

Qt子线程更新数据发到主线程显示.rar

Qt的子线程无法直接更新主UI,需要发送信号到主线程进行更新,我用的QTableWidget展示数据。

2019-08-18

中国象棋源码(C++/MFC)

用MFC写的中国象棋游戏,VS2015可以直接编译,有多重AI算法,有兴趣可以研究,全网最好的象棋代码。又不懂的可以看看我的博客,有讲解。

2018-12-24

ffmpeg3.2.4_Win32开发库文件

ffmpeg3.2.4_Win32开发库文件,包含头文件,静态库lib, 动态库dll.

2018-06-03

jsoncpp_sdk_x64.rar

vs2017编译的jsoncpp sdk, 包含Debug和Release版本dll, lib , include,可以和其它sdk一样直接包含到项目中使用,可以去我的博客C++专栏找使用方法。

2020-04-06

C++/OpenCV2.4.9 数字精确识别源码

利用OpenCV的图像处理技术,对图像进行灰度处理,二值分析,降噪,滤波等,识别照片中的数字,完美精确, C++ VS2015代码,有详细的代码注释,完整源码。

2017-11-02

华为C++/C/java代码规范(完整版)

最新的华为代码规范,适用于C++/C/java,高清带目录,格式标准的代码给自己和维护者都是一种享受,建议程序员多看看。

2018-03-14

侯捷:左手程序右手诗(电子书)PDF

侯捷的日常博客全部总结,关于C++开发,业余生活体验,程序员发展等,值得所有开发者看看,在你迷茫,找不到方向,不知道做什么时可以看看这本书。

2019-06-07

Halcon12与MFC数字识别详细教程

基于Halcon12的数字识别,识别精确,关于代码的解释,请关注的我的博客,在博客里我做了详细的解释。

2018-07-09

C# TCP网络通信示例:多人聊天发文件

该资源包含客户端,服务器, 用户注册到数据库(可自行裁剪该功能),通过TCP 实现聊天,发文件,可以多人同时聊天。代码有完整的注释,是完整的项目。

2018-04-02

Win10 Git Bash闪退的解决方案文件

当你的Win10系统出现Git Bash闪退时,需要该文件进行开启相关服务,可以参考我的博客进行解决。

2018-11-07

支持向量机通俗导论(理解SVM的三层境界)PDF

这应该是全网最全最清晰的SVM学习的资料了,我学了10天,终于了解了,大家可以学学看。PDF文档学会后,可以结合OpenCV的源码看看,相信你们一定有大的收获。

2018-04-13

很全的 Qt qss

这是一个Qt第三方样式表,下载后,可以直接加到项目中使用。不知道怎么用的,可以关注我的Qt专栏。使用链接:https://mingshiqiang.blog.csdn.net/article/details/108860180

2020-09-29

Qt 5.7串口助手发送接收源码

利用Qt的串口类开发的串口助手,可以收发16进制,字符的程序。完美的界面,可以实际运用,串口开发的朋友可以借鉴,绝对可靠。

2018-06-19

ffplay源码架构图.vsdx

我用visio2016画的,把ffplay源码中的各个模块都展现出来了,有兴趣的可以去看看我的博客。

2019-12-08

lua-5.3.4源码

lua5.3.4源码,导入VS2015可以直接编译,想学习分析Lua源码的可以下载,研究。

2019-01-10

FileDownlod.rar

Qt实现的网络文件下载,用QtCreator可以直接打开编译,运行,我的博客有讲解,可以去看看。

2019-08-05

(Programming in Lua)Lua程序设计Word版

Programming in Lua是Lua教程最经典的书籍,这是Word版,可以自由编辑,Lua用户可以下载

2018-08-28

空空如也

空空如也

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

TA关注的人 TA的粉丝

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