自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(140)
  • 资源 (9)
  • 收藏
  • 关注

原创 webrtc-m79-视频采集器到视频编码器流水线的建立

1 问题视频采集器采集到像素格式的VideoFrame经过编码后才能通过P2PtransportChannel传递给对端,这其中就包括了两个主要环节:第一个环节:采集器到编码器之间流水线的建立;第二个环节:采集到的像素格式的VideoFrame沿着流水线送到编码器,并发送到对端;2 采集器到编码器之间流水线的建立3 相关代码3.1 采集器到编码器之间流水线的建立///////////////////////////////////////////////..

2022-05-14 20:05:43 994

原创 webrtc-m79-本地采集的视频渲染流程

1 问题本文主要以windows为例,基于peerconnection_client的例子来讲解本地采集的视频是如何渲染到本地的窗口上的。该问题主要分为两个环节:第一个环节:需要建立渲染窗口到视频采集器的流水线的建立;第二个环节:采集的视频沿着流水线送到渲染窗口;注意:视频采集器采集到的是像素格式(RGB或者YUV)的VideoFrame,此时还没有编码(比如:VP8/VP9/H264/H265等)成视频帧;2 VideoTrack到渲染窗口流水线的建立

2022-05-14 16:06:17 588

原创 webrtc-m79-视频流的接收

void UDPPort::OnReadPacket(rtc::AsyncPacketSocket* socket, const char* data, size_t size, const rtc::SocketAddress& remote_addr, const int64_t&.

2021-05-23 21:43:33 832

原创 webrtc-m79-视频解码的流程

void VideoReceiveStream::Start() { RTC_DCHECK_RUN_ON(&worker_sequence_checker_); if (decoder_running_) { return; } const bool protected_by_fec = config_.rtp.protected_by_flexfec || rtp_video_stream_receive.

2021-05-23 21:29:41 1110

原创 webrtc-m79-视频流接收相关的几张类图

1 Call 的类图2 MediaChannel相关的类图3 RtpReceiver相关的类图4 VideoReceiveStream的类图5 RtpVideoStreamReceiver的类图

2021-05-11 20:09:54 492

原创 webrtc-m79-测试peerconnectionserver的webclient-p2p-demo

测试peerconnectionserver的webclient-p2p-demo

2023-09-11 15:46:17 693

原创 webrtc-m79-msvc编译H264

webrtc-m79-msvc编译H264

2023-08-30 17:08:02 797

原创 创建ffmpeg vs2019工程

ffmpeg vs2019工程的生成

2023-08-30 16:25:49 1237

原创 obs-vs2022编译

obs-vs2022编译

2023-03-13 09:56:36 1266 2

原创 lua与c/c++的互调

lua与C/C++函数的互调都需要经过虚拟栈(通过来体现)来进行。lua调用C/C++函数就是想复用原始的C/C++函数的能力,但是又不能直接在lua代码中进行调用,必须通过虚拟栈,所以就需要先将原始的C/C++函数按照指定的模式进行封装;然后利用lua的CAPI将这个封装好的函数注册到lua中;最后在lua中调用这个封装好的函数;C/C++如果想调用在lua脚本中定义的函数,同样也是不能直接调用,也需要通过虚拟栈,所以也需要将lua函数按照指定的模式封装成C/C++函数,具体细节参考下面的分析;.....

2022-07-23 23:20:28 1506

原创 webrtc-m79-采集的像素格式的VideoFrame到渲染窗口和编码器小结

1 相关类图2 小结不论视频流最终目的地是流向本地渲染模块还是要流向编码器,首先都要经过VideoTrack这个对象。webrtc::VideoTrack 和webrtc::VideoTrackSource 都实现了rtc::VideoSourceInterface<VideoFrame> 接口,也就是说他们都是视频流的生产者,但是它们两个都不是视频源的最初的生产者,最初的视频生产者是 webrtc::test::VcmCapturer ;代...

2022-05-16 09:44:19 432

原创 GB28181-上级平台docker镜像

1 背景基于resip写了一个上级平台服务,提供设备或者平台使用GB28181注册上来。目前提供的功能主要有:register;keepalive;catalog;invite;bye;这个GB28181信令服务DMS使用的是ZLMEDIAKIT作为流媒体服务;目前是直接在DMS的配置文件中配置的ZLMEDIAKIT的地址,如果为了负载均衡等可以进行适当的修改;2 结构图restapi主要有三个接口:2.1 获取catalogGET请求http://ip:port/v1/ca

2022-04-14 16:56:06 591

原创 CMAKE与_GLIBCXX_USE_CXX11_ABI

1 背景将centos上的gcc 4.8.5升级到gcc 5.4.0后编译程序出现问题,发现存在_GLIBCXX_USE_CXX11_ABI的问题,但是所有的代码使用的都是gcc 5.4.0,按照理论不应该出现这个问题。2 解决方案查看cmake发现,cmake使用的gcc的版本是5.4.0,但是使用的g++的版本却是4.8.5,后面通过强制指定g++编译器的版本解决该问题,也就是为cmake指定编译器,比如:CC=gcc CXX=g++ cmake ..为cmake指定编译器还有其余的

2022-03-26 13:21:18 2605

原创 thinkpadL13安装centos7找不到无线网卡

1 背景安装完成之后识别不了无线网卡,执行iw dev命令效果如下:2 解决方案连接上有线网卡,升级内核,升级内核操作如下:rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgrpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpmyum --enablerepo=elrepo-kernel install kernel-ml-

2022-03-26 13:12:15 2251

原创 LeetCode-栈-逆波兰表达式求值

1 题目150. 逆波兰表达式求值剑指 Offer II 036. 后缀表达式2 实现class Solution {public: int evalRPN(vector<string>& tokens) { stack<long> s; for (auto& str:tokens) { if (str.find_first_of("+-*\/") == string:

2022-02-24 16:56:14 301

原创 LeetCode-动态规划-路径的数目

1 题目剑指 Offer II 098. 路径的数目62. 不同路径2 实现class Solution {public: vector<vector<long>> dp; int uniquePaths(int m, int n) { //方法一:使用 dfs 超时 // int res = 0; // dfs(m, n, 0, 0, res); // return res;

2022-02-23 19:37:30 241

原创 LeetCode-回溯算法

1 介绍回溯问题的解决方法就是一个决策树的遍历过程,主要包括3个关键点:(1) 路径:已经做出的选择;(2)选择列表:能做出的所有选择的集合;(3)结束条件:选择列表被用完作为决策树的终止条件;2 题目2.1 所有子集剑指 Offer II 079. 所有子集78. 子集class Solution {public: //利用回溯算法 vector<vector<int>> s...

2022-02-23 14:42:02 403

原创 LeetCode-链表

1 链表排序1.1 链表排序剑指 Offer II 077. 链表排序148. 排序链表归并排序/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: struct ListN

2022-02-23 11:03:42 247

原创 LeetCode-二分查找

1 二分查找介绍2 题目2.12.22.32.42.52.62.72.82.92.102.11

2022-02-20 18:33:02 160

原创 LeetCode-异或

1 异或性质介绍异或运算的性质:如果 a ^ b = c 成立,那么a ^ c = b 与 b ^ c = a 均成立。即 如果有三个数,满足其中两个数的异或值等于另一个值,那么这三个数的顺序可以任意调换。注:利用这条性质,可以不使用第 3 个变量而交换两个变量的值。void swap(int& a, int &b){ a=a^b; b=a^b; a=a^b;}注:异或运算其实就是 二进制下不进位的加法,可利用此性质求解两个数的和。2

2022-02-19 18:39:20 516

原创 Aho-Corasick(AC自动机)

1 介绍trie树:LeetCode-Trie树_hclbeloved的博客-CSDN博客AC 自动机算法,全称是 Aho-Corasick 算法。其实,Trie 树跟 AC 自动机之间的关系,就像单串匹配中朴素的串匹配算法,跟 KMP 算法之间的关系一样,只不过前者针对的是多模式串而已。所以,AC 自动机实际上就是在 Trie 树之上,加了类似 KMP 的 next 数组,只不过此处的 next 数组是构建在树上的。2 实现// Trie4AhoCoras...

2022-02-18 11:13:52 893

原创 LeetCode-Trie树

1 Trie树1.1 简介Trie 树,也叫“字典树”。顾名思义,它是一个树形结构。它是一种专门处理字符串匹配的数据结构,用来解决在一组字符串集合中快速查找某个字符串的问题。1.2 实现Trie 树是一个多叉树,具体实现如下:// TrieTree.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <string.h>class Trie{public: Trie() { roo...

2022-02-16 14:14:25 176

原创 LeetCode-线性排序-(桶排序、计数排序、基数排序)

1 线性排序2 题目2.12.22.3

2022-02-13 14:15:44 659

原创 LeetCode-快速排序的应用

1 快速排序void qSort(vector<int>& nums, int p, int r){ if (p < r) { int q = partition(nums,p,r); qSort(nums,p,q-1); qSort(nums,q+1,r); }}int partition(vector<int>& nums, int p, int r){ int

2022-02-12 22:16:51 256

原创 LeetCode-堆排序

1 介绍最大堆:priority_queue<int, vector<int>, less<int>> maxHeap;最小堆:priority_queue<int, vector<int>, greater<int>> minHeap;如果使用 priority_queue<int> 创建堆,默认创建的是最大堆;最小堆会在一些图算法中应用,比如...

2022-02-12 21:55:02 7340

原创 LeetCode-桶排序

1 桶排序介绍2 桶排序题目2.1 存在重复元素220. 存在重复元素 IIIclass Solution {public: bool containsNearbyAlmostDuplicate(vector<int>& nums, int k, int t) { //方法一: 滑动窗口 //相当于用set维护一个窗口,这个set的size就是窗口大小 // set<long long> st

2022-02-12 21:46:24 254

原创 LeetCode-子数组-子字符串(也就是连续的序列)

1 解题思路 子数组以及子字符串(子串)就是连续的序列。既然是连续,常使用到的方法就是使用滑动窗口,滑动窗口的滑动条件就是题目的要求,滑动条件可以借助有序的set、multiset或者无序的unordered_set等来实现。 滑动窗口参考链接:CSDN 对比子序列的题目:CSDN2 子数组题目2.1 最大连续1的个数1004. 最大连续1的个数 IIIclass Solution {public: int longestOn...

2022-02-12 11:24:57 388

原创 LeetCode-子序列-字符串序列

1 最长递增子序列300. 最长递增子序列class Solution {public: int lengthOfLIS(vector<int>& nums) { int n = nums.size(); if (n == 0) { return 0; } //dp[i]: 以索引 i 处数字结尾的最长上升子序列的长度 vector<int&

2022-02-11 22:47:32 202

原创 LeetCode-哈希-存在重复元素 III

1 题目220. 存在重复元素 III剑指 Offer II 057. 值和下标之差都在给定的范围内2 代码实现class Solution {public: bool containsNearbyAlmostDuplicate(vector<int>& nums, int k, int t) { unordered_map<int, unordered_set<int>> m; int

2022-02-10 13:19:13 248

原创 LeetCode-哈希-最长连续序列

1 题目128. 最长连续序列剑指 Offer II 119. 最长连续序列2 代码实现2.1 最小堆(O(nlogn))class Solution {public: int longestConsecutive(vector<int>& nums) { priority_queue<int, vector<int>, greater<int>> minHeap; unordered_s

2022-02-09 17:11:12 294

原创 LeetCode-树-中序遍历(DFS)-二叉搜索树中两个节点之和

1 题目剑指 Offer II 056. 二叉搜索树中两个节点之和653. 两数之和 IV - 输入 BST2 代码实现/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {}

2022-02-09 13:51:15 326

原创 LeetCode-树-中序遍历(DFS)-二叉搜索树迭代器

1 题目173. 二叉搜索树迭代器剑指 Offer II 055. 二叉搜索树迭代器2 代码实现2.1 递归版本class BSTIterator {private: queue<TreeNode*> q;public: BSTIterator(TreeNode* root) { dfs(root); } int next() { int val = q.front()->val;

2022-02-09 13:38:36 676

原创 LeetCode-图-拓扑排序-重建序列

1 题目剑指 Offer II 115. 重建序列拓扑排序参考:图-有向图-无向图-二分图-拓扑排序_hclbeloved的博客-CSDN博客2 代码实现//拓扑排序class Solution {public: bool sequenceReconstruction(vector<int>& org, vector<vector<int>>& seqs) { if (seqs.empty())

2022-02-09 12:36:52 234

原创 LeetCode-树-中序遍历(DFS)-所有大于等于节点的值之和

1 题目剑指 Offer II 054. 所有大于等于节点的值之和538. 把二叉搜索树转换为累加树1038. 把二叉搜索树转换为累加树2 代码实现/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), ri

2022-02-08 19:20:19 214

原创 LeetCode-树-中序遍历(DFS)-二叉搜索树中的中序后继

1 题目剑指 Offer II 053. 二叉搜索树中的中序后继类似题目:LeetCode-树-中序遍历(DFS)-展平二叉搜索树_hclbeloved的博客-CSDN博客2 代码实现/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(

2022-02-08 18:52:02 58

原创 LeetCode-树-中序遍历(DFS)-展平二叉搜索树

1 题目剑指 Offer II 052. 展平二叉搜索树897. 递增顺序搜索树2 代码实现class Solution {public: TreeNode* increasingBST(TreeNode* root) { TreeNode *newRoot = NULL, *pre = NULL; queue<TreeNode*> q; dfs(root, q); while (!q.empty())

2022-02-08 17:23:36 212

原创 LeetCode-树-DFS-二叉树中的最大路径和

1 题目124. 二叉树中的最大路径和剑指 Offer II 051. 节点之和最大的路径2 解答/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * Tree

2022-02-08 12:15:49 243

原创 LeetCode-单调队列

1 买卖股票的最佳时机121. 买卖股票的最佳时机剑指 Offer 63. 股票的最大利润//单调队列class Solution {public: int maxProfit(vector<int>& prices) { int maxPro = 0; do { if (prices.size() < 2) break; de

2022-02-05 18:35:18 309

原创 所有节点对的最短路径(《算法导论3rd-P399》)

1 介绍求解一个图中所有节点对的最短路径,假设有解,也就是:图中不存在负权重的环。根据前面的文章,主要有两种解法:(1)图中存在负权重边,则遍历图中的节点,使其成为起始节点,调用BellmanFord算法即可。(2)图中不存在负权重边,则遍历图中的节点,使其成为起始节点,调用Dijkstra算法即可。BellmanFord和Dijkstra算法:单源最短路径(《算法导论3rd-P374》)_hclbel...

2022-02-04 19:28:29 800

原创 带有备忘录的DFS(同时起到防止重复访问的作用)

1 介绍参考之前的链接:深度优先(DFS)_hclbeloved的博客-CSDN博客深度优先为了防止重复访问,需要一个visited数组来记录之前已经走过的路,从而起到防止走回头路的作用。现有个题目在DFS中使用到了备忘录(类似于从上到下的动态规划中的备忘录)。 注意:从上到下的动态规划使用的也是递归,而DFS使用的也是递归。2 矩阵中的最长递增路径329. 矩阵中的最长递增路径剑指 Offer II 112. 最长递增路径2.1 传统的DFS求解...

2022-02-04 09:59:15 472

DB33 2011 跨区域视频监控联网共享技术规范(第一部分~第六部分)

DB33 2011 跨区域视频监控联网共享技术规范(第一部分~第六部分)

2018-12-28

Rtsp2Rtmp从前端设备获取RTSP码流并将其转换成RTMP码流推送至RTMP SERVER

Rtsp2Rtmp从前端设备获取RTSP码流并将其转换成RTMP码流推送至RTMP SERVER,目录下面有配置文件的详细说明具体请查看《配置文件说明.png》

2018-10-27

设计模式EA类图并使用C++实现了19个设计模式

使用EA软件绘制相关设计模式的类图,并使用C++语言实现了对应的类图,并在centos6.7上完成了测试

2017-05-10

使用libevent源码在VS2013下生成静态库

为了在Windows下可以使用libevent库文件,同时可以在实际应用中进入代码进行调试,故此处分别每一个生成的静态库建立一个vs2013工程。libevent版本:libevent-2.0.22-stable,生成了三个静态库,生成步骤根据Makefile.nmake文件中的依赖关系找到源文件及其对应的头文件即可,并根据其内引用的文件的目录放置到合适的位置即可,所以代码是做了一些修改的,为使代码能够在VS2013上正确编译,修改的部分大家可以与原来的对比一下就好。

2015-06-03

LCD设计编程访法及要义

来自小丑资料,讲解的很好,对于程序可移植性及lcd程序的编写有很大帮助

2010-05-18

矽创st7920繁体完整版资料

st7920的完整资料(繁体),来自矽创公司的权威资料,共54页,是st7920的datasheet

2010-05-18

MSP430入门资料

分为模块化的设计以及各种各样的例程,而且已经调试完毕,完全可用

2009-08-11

18b20中文资料及例程

详细的时序图,解释明了,例子丰富,原理讲得通俗易懂

2009-08-11

18b20中文资料及例程

比较容易看懂,而且有例子可以参考,引脚的解释也很清楚

2009-08-11

空空如也

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

TA关注的人

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