自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(115)
  • 资源 (7)
  • 收藏
  • 关注

原创 qt5.12.10 vs2019编译静态库

1.背景 以前使用MFC做界面,但是美化开发成本高,难度大,而且效果不理想,所以想采用QT实现。同时使用现有的dll库方式打包输出,依赖库大,而且输出文件多。所以通过静态最小编译的方式。实现输出单一最小UI exe模块。2.源码选择和版本 编译源文件选择市面上版本比较稳定的是5.12.10。需要下载QT源码和程序,进入QT版本下:https://download.qt.io/archive/qt/ 进入版本,选择singleqt源码版本:http://mirrors...

2021-06-17 16:22:32 1952

原创 NSS 编译

2.下载nss源码https://github.com/nss-dev/nss.githttps://github.com/nss-dev/nss/archive/NSS_3_59_RTM.zip3.安装脚本https://www.cnblogs.com/stone-pieliedie/p/3435828.htmlhttps://blog.csdn.net/stelalala/article/details/97469734.安装MozillaBuildhttps:/...

2021-05-31 23:01:08 2374 2

原创 Beyond Compare 4 30天突破

计算机\HKEY_CURRENT_USER\Software\Scooter Software\Beyond Compare 4\CacheId删除

2021-05-27 19:21:11 239

转载 placement new

placement new是重载operator new的一个标准、全局的版本,它不能被自定义的版本代替(不像普通的operator new和operator delete能够被替换成用户自定义的版本)。它的原型如下:void *operator new( size_t, void *p ) throw() { return p; }首先我们区分下几个容易混淆的关键词:new、operator new、placement new new和delete操作符我们应该都用过,它们是对堆中..

2021-05-13 20:06:48 179

原创 QT 模块优化

abstractbutton .......... Widgets: Abstract base class of button widgets, providing functionality common to buttons.abstractslider .......... Widgets: Common super class for widgets like QScrollBar, QSlider and QDial.accessibility ........... Utilities:

2021-04-02 15:55:42 830

原创 右值引用

https://www.cnblogs.com/likaiming/p/9045642.html

2020-12-17 12:19:34 150

原创 NSS vs2019 编译步骤

1.安装vs20192.下载nss源码https://github.com/nss-dev/nss.githttps://github.com/nss-dev/nss/archive/NSS_3_59_RTM.zip4.安装MozillaBuildhttps://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/MozillaBuildSetup-Latest.exe5.下载nsprhttps://ftp.mozill

2020-11-23 20:24:35 866

转载 VC++ 2017编译WebRTC参数介绍

VC++ 2017编译WebRTC参数介绍 本文主要介绍VC++ 2017编译webrtc m76版本参数配置,具体代码获取流程请自行阅读webrtc官方文档:https://webrtc.org/native-code/development/,这里不做展开先贴出完整的gn参数1 gn gen --target=x64 --args="symbol_level=0 is_clang = true use_custom_libcxx = false use_rtti=true rtc_incl

2020-10-23 12:09:53 1002

转载 WebRTC视频JitterBuffer详解

WebRTC视频JitterBuffer详解1 WebRTC版本 2 概要 3 JitterBuffer结构和基本流程 4 帧完整性 - PacketBuffer 4.1 包缓存 4.2 帧的开始和结束 4.3 插入RTP数据包 - PacketBuffer::InsertPacket 4.4 处理RTP填充包 - PacketBuffer::PaddingReceived 4.5 丢包检测 - PacketBuffer::UpdateMissingPackets 4.6

2020-10-12 19:48:12 4717

转载 C++ UML类图详解

文章目录 基本概念: 1. 泛化(Generalization) 2. 实现(Realization) 3. 关联(Association) 4. 聚合(Aggregation) 5. 组合(Composition) 6. 依赖(Dependency) UML实例分析 基本概念:类图(Class Diagram): 类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和.

2020-09-24 12:09:55 3437

转载 c++ 防火墙设计模式PImpl

编译防火墙~PImpl [3]CrazyRabbit人民广场放鸽子大赛唯一到场选手PImpl(Pointer to implementation)是一种C++编程技术,其通过将类的实现的详细信息放在另一个单独的类中,并通过不透明的指针来访问。这项技术能够将实现的细节从其对象中去除,还能减少编译依赖。有人将其称为“编译防火墙(Compilation Firewalls)”。Herb Sutter(C++标准委员会成员)写了一些相关的博客,对其博客做一个翻译记录:GotW #7a Sol

2020-09-24 11:27:41 949

转载 WebRTC IOS视频硬编码流程及其中传递的CVPixelBufferRef

WebRTC中默认摄像头采集:RTCCameraVideoCapturer:src/sdk/objc/components/capturer/RTCCameraVideoCapturer.m- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConn.

2020-09-17 10:50:37 2084 1

原创 webrtc-ios-demo分析

1.主函数运行 主函数启动后,会像MFC那样,创建并启动ARDAppDelegate实例。2.主窗口显示ARDMainViewController设置为主窗口控制器,并显示ARDMainView描述的主窗口。3.点击call 后,进入对话页面。 用户点击主界面的call 后,ARDMainView 把消息传递给ARDMainViewController 的didInputRoom,ARDMainViewController模态显示通话ARDVideoCallVie...

2020-09-15 16:29:06 392

转载 malloc背后的系统知识

面试的时候经常会被问到 malloc 的实现。从操作系统层面来说,malloc 确实是考察面试者对操作系统底层的存储管理理解的一个很好的方式,涉及到虚拟内存、分页/分段等。下面逐个细说。1. 虚拟内存首先需要知道的是程序运行起来的话需要被加载的物理内存中,具体到计算机硬件就是内存条。操作系统启动的时候先把自己加载到物理内存的固定位置(一般为底部),物理内存的其他位置就用来运行用户程序。程序就是一堆指令,程序运行可以简单抽象为把指令加载到内存中,然后 CPU 将指令从内存载入执行。1. 为什么需要

2020-09-15 15:40:58 265

转载 Windows下 WebRTC Demo运行: PeerConnection

PeerConnection Demo简介在成功编译WebRTC源码之后,可以运行WebRTC自带的例子体验一对一音视频通信效果。使用src/out/Debug 目录下的peerconnection_client.exe 和 peerconnection_server.exe两个文件,最终运行的架构图如下图所示:局域网运行PeerConnection局域网运行PeerConnection 例子需要用到两台电脑,并要求两台电脑都配置有摄像头和麦克风。测试步骤如下:1...

2020-08-28 18:22:22 1699 4

转载 UDP打洞基础

1.简介  当今互联网到处存在着一些中间件(MIddleBoxes),如NAT和防火墙,导致两个(不在同一内网)中的客户端无法直接通信。这些问题即便是到了IPV6时代也会存在,因为即使不需要NAT,但还有其他中间件如防火墙阻挡了链接的建立。  当今部署的中间件大多都是在C/S架构上设计的,其中相对隐匿的客户机主动向周知的服务端(拥有静态IP地址和DNS名称)发起链接请求。大多数中间件实现了一种非对称的通讯模型,即内网中的主机可以初始化对外的链接,而外网的主机却不能初始化对内网的链接,除非经过中间件管

2020-08-28 17:42:51 3000

原创 Windows10 VS2019编译WebRTC官方demo

操作系统Windows10专业版1909,64位版本 内存12G,建议越大越好 预留了50G磁盘空间,注意有大于4G文件,所以文件系统格式需要是NTFSVS2019使用的是enterprise版,community版本也没有问题。 在C盘安装,安装路径使用默认,据说修改会引起某些问题。 Desktop development with C++组件选择安装10.0.18362或以上的Win10 SDK,最新版的VS2019已经默认了。 后面还需要修改Win10 SDK的安装,添加安装调试工

2020-08-28 01:05:18 2206

转载 WebRTC架构分析]WebRTC 的线程模型

前言WebRTC 作为一个实时音视频通信系统,包含了信令控制、音视频传输、音视频采集、音视频编码、音视频解码、音视频渲染等所有功能。由于其功能多样性,注定了系统结构的复杂性,再加上音视频需要做很多编码前后的处理,算法非常复杂,逻辑结构也复杂。为了在复杂网络环境下,保证音视频通信的流畅性,WebRTC 还做了很多流控、带宽预测、拥塞控制算法。为此,为了降低系统的复杂性,提高系统的运行效率,WebRTC 设计了一套多线程框架,并且做了精心的设计。下来我们就分析一下 WebRTC 中的线程模型。线程结

2020-08-27 23:40:57 931

转载 YUV格式深入浅出

YUV 是一种颜色编码方法,和它等同的还有 RGB 颜色编码方法。RGB 颜色编码RGB 三个字母分别代表了 红(Red)、绿(Green)、蓝(Blue),这三种颜色称为 三原色,将它们以不同的比例相加,可以产生多种多样的颜色。在图像显示中,一张 1280 * 720 大小的图片,就代表着它有 1280 * 720 个像素点。其中每一个像素点的颜色显示都采用 RGB 编码方法,将 RGB 分别取不同的值,就会展示不同的颜色。RGB 图像中,每个像素点都有红、绿、蓝三个原色,其中每种原色

2020-08-27 16:12:35 506

转载 stun协议

前一段时间在P2P通信原理与实现中介绍了P2P打洞的基本原理和方法,我们可以根据其原理为自己的网络程序设计一套通信规则,当然如果这套程序只有自己在使用是没什么问题的。可是在现实生活中,我们的程序往往还需要和第三方的协议(如SDP,SIP)进行对接,因此使用标准化的通用规则来进行P2P链接建立是很有必要的。本文就来介绍一下当前主要应用于P2P通信的几个标准协议,主要有STUN/RFC3489,STUN/RFC5389,TURN/RFC5766以及ICE/RFC5245。STUN简介在前言里我们看到

2020-08-27 14:21:55 1154

转载 头文件定义变量-弊端

头文件为什么不能定义变量在头文件里使用#ifndef#define#endif可以避免重复定义,可是如果在其中定义变量向下面这样#ifndef _TEST_H#define _TEST_Hint a;#endif如果有多个文件引用了这个头文件的话就会提示重复定义。这是因为编译器需要经过预处理、编译、汇编、连接才可以生成可执行程序,在编译器执行链接这一步骤时,就会将工程中所有的符号整合在一起,由于文件中有重名变量,于是就出现了重复定义的错误。但是如果需要使用的全局变.

2020-08-26 23:33:44 430

转载 C++显示调用析构函数

C++中new的用法及显示调用析构函数 最近被问到了C++内存池的问题,其中不免涉及到在指定内存地址调用对象构造函数以及显示调用对象析构函数的情况。C++中new的用法new是C++中用于动态内存分配的运算符,在C语言中一般使用malloc函数。(1)plain new顾名思义就是普通的new,就是我们惯常使用的new。分配内存,调用构造函数,在C++中是这样定义的:1 void* operator new(std::size_t) throw(std::bad_alloc);2 v

2020-08-26 22:59:59 3230

原创 c++ lamuda表达式mutable

1.lambda表达式 C++11引入了Lambda表达式。Lambda表达式的引入,方便了简短函数的定义,为常用的一次性函数的定义和使用提供了很大的便利。 Lambda表达式实际上是一种匿名函数定义,常用来定义简单和不重复使用的函数。其可使用的外部变量、定义方式等都与常规函数有所不同。auto f = [捕获参数列表](函数参数列表) mutable throw(类型)->返回值类型 {函数语句};Lambda表达式的定义结构分为六个部分:函数对象参数部分,Lambd...

2020-08-26 12:15:55 5716

转载 C++ Lambda 原理和编译器实现

C++ Lambda 编译器实现原理本贴最后更新于 571 天前,其中的信息可能已经渤澥桑田Lambda 表达式语法Lambda 表达式完整的格式如下:[捕获列表] (形参列表) mutable 异常列表-> 返回类型{ 函数体}各项的含义:捕获列表:捕获外部变量,捕获的变量可以在函数体中使用,可以省略,即不捕获外部变量。 形参列表:和普通函数的形参列表一样。可省略,即无参数列表 mutable:mutable 关键字,如果有,则表示在函数...

2020-08-26 11:32:34 1827

转载 C++11左右值前世今生

https://corecppil.github.io/CoreCpp2019/Presentations/Dan_Saks_Lvalues_and_Rvalues.pdf简述#原版PPT 有31页,我主要摘取几个重要的点。下面所说的对象都是广义的对象(object) 一个int float 都可以看作一个对象。而 类对象 与区分。最后的总结是我自己总结的。正文翻译#概览#左右值并非C++ 语言特性,相反,它是表达式的属性。 本篇将会通过以下视角理解左右值: 内置运算符的.

2020-08-24 22:34:18 410

转载 二分查找及其变种(非递归方式)

二分查找及其变种(非递归方式)   二分查找在面试中经常被问到,尤其是他的各种变化版本。二分查找就是把查找的键值和子数组中的中间键作比较,如果被找的键值小于中间键,则在左半部分继续查找;如果大于中间值就在右半部分查找;否则就是要查找的元素。基本二分查找  给定一个有序数组和一个关键字,找到该值在数组中的下标,否则返回-1 1 int BinarySearch(int a[],int size,int key) 2 { 3 int left = 0, right = size

2020-08-23 10:52:28 173

转载 TCP的拥塞控制(详解)

在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况就叫做网络拥塞。在计算机网络中数位链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的资源。若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。当输入的负载到达一定程度 吞吐量不会增加,即一部分网络资源会丢失掉,网络的吞吐量维持在其所能控制的最大值,转发节点的缓存不够大这造成分组的丢失是拥塞的征兆。TCP的四种拥塞控制算法1.慢开始2.拥塞控制3.快重传4.快恢复假定:1.数

2020-08-23 08:41:10 435

原创 mediasoup-rtp头及rtp包检查

rtp 包含2个字节的公共,包含版本号2,是否有填充数据P,是否有扩展子段,比如说rid ,mid,csr,mark(流结束) 和负载类型组成。具体子段含义,参照https://blog.csdn.net/Dreamandpassion/article/details/107525385

2020-08-21 00:05:03 771

转载 c++-字节对齐

struct 字节对齐详解zhanghow 2017-02-16 17:49:50 6781 收藏 6 分类专栏: C++ 版权现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只...

2020-08-20 23:06:53 277

转载 NAT类型和打洞流程

一、NAT1.含义 NAT技术(NetworkAddressTranslation,网络地址转换)是一种把内部网络(简称为内网)私有IP地址转换为外部网络(简称为外网)公共IP地址的技术,它使得一定范围内的多台主机只利用一个公共IP地址连接到外网,可以在很大程度上缓解了公网IP地址紧缺的问题。2.实现方式 静态转换、动态转换、端口多路复用。静态转换:是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的。通过静态配置,把一个固定...

2020-08-20 10:45:57 3420 1

转载 WebRTC的NACK和RTX简述

背景在丢包 10%下测试WebRTC,发现丢包导致的卡顿,需要一些开启一些机制来保证丢包重传。摘要简述WebRTC中NACK、RTX的功能和联系。正文NACK、RTX是WebRTC里丢包重传策略,两个策略之间有一定的联系。NACK:接收端通过RTCP将丢包的序列号通知给发送端,让发送端重传该包。RTX:发送端在新的SSRC上发送重传包或者冗余包。两者均需要通过sdp协商开启,在支持的服务端(例如Janus)修改SDP即可开启。要点重传包不一定通过RTX发送; RTX包不

2020-08-18 17:49:41 957

原创 mediasoup-producer唯一性标识

1.ssrc2.mid3.rid

2020-08-18 16:40:33 359

转载 rtp路由算法原理-dijksta算法

最短路径算法最短路径算法是计算机网络里一个常用的路由算法,该算法可以找出网络中从一个节点到另一个节点的最短路径。假设有一个网络,其拓扑如下图所示,图中一共有8个节点,为节点A到节点H,相邻节点间的距离标注在边上,如节点A到节点B的距离为2。现在,假如从节点A出发,要到达节点D,最短路径应该是怎样呢?图11959年,Dijkstra提出了最短路径算法,根据该算法,可以找出任意两节点之间的最短网络路径。对图1来说,从节点A到节点D的最短路径应该是A->B->E->F->H

2020-08-18 00:15:23 440

转载 百度云webrtc方案

如何使用开源SFU构建RTC云服务原创 李永兴 LiveVideoStack 7月2日编者按:本文由百度智能云RTC产品技术负责人 李永兴LiveVideoStack线上分享的内容整理而成,从系统架构角度,分析了常见的开源SFU在分布式部署以及高可用、高并发方面的不足,并提出相应的解决方案。大家好,我是来自百度智能云的李永兴,在百度智能云媒体云团队主要负责RTC产品的研发工作。01开源SFU的现状与不足在研发RTC产品的过程中,我们调研了许多优秀的...

2020-08-17 23:12:20 1748

转载 基于路由表的webrtc流媒体服务器方案

基于路由表的webrtc流媒体服务器方案 ##概述在开发流媒体服务器时,rtp数据如何在服务器之间转发,对于降低音视频延时和丢包有很重要的影响。我设想了一种可以降低音视频延时的转发方案。思想来源于IP协议的路由表选路算法。TCP UDP协议的区别我们经常说tcp和udp的区别是,tcp是有连接的,udp是无连接的。TCP的有连接什么是连接?连接就是一个固定的路径,这个路径是由网络上一些路由器、交换机组成。这个连接途经的设备是固定的,这些是在tcp创建连接时选定的。如何

2020-08-17 19:45:11 316 1

原创 RTCP SR格式及RTP传输质量计算

RTCP SR格式一. 前言 rtp发送端向接受者发送SR报文,主要目的是方便接收方做好音视频同步工作,用来使发送端以多播方式向所有接收端报告发送情况。二. RTCP SR格式发送者报告SR,其RTCP类型payload type是200。主要信息共24bytes,也就是6 words,如图2.1 图2.12.1 信息头版本(V):同RTP包头域。填充(P):同RTP包头域。接收报告计数器(RC):5比特,该SR包中的接收报告块的数目,可以...

2020-08-14 00:49:28 1040

转载 RTP报文头中的SSRC和CSRC

RTP报文头中的SSRC和CSRC同步信源(SSRC)标识符:占32位,用于标识同步信源。该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。·特约信源(CSRC)标识符:每个CSRC标识符占32位,可以有0~15个。每个CSRC标识了包含在该RTP报文有效载荷中的所有特约信源。这里的同步信源是指产生媒体流的信源,例如麦克风、摄像机、RTP混合器等;它通过RTP报头中的一个32位数字SSRC标识符来标识,而不依赖于网络地址,接收者将根据SSRC标识符来区分不同的信源,.

2020-08-11 23:02:29 2971

原创 ice-candidate属性

15.1. "candidate" Attribute候选. It contains a transport address for a candidate that can be used for connectivity checks. The syntax of this attribute is defined using Augmented BNF as defined in RFC 5234 [RFC5234]: candidate-attribute = "candidate" ":" f

2020-08-10 23:47:04 3024

原创 mediasoup-producer-c++

生产者代表被注入到Mediasoup路由器中的音频或视频源。它是在定义媒体数据包传输方式的传输方式之上创建的。1.创建生产者2.生产者类型3.支持方法支持暂停,恢复,发送rtp数据。

2020-08-09 23:40:05 493

原创 janus候选地址生成

nice_agent_get_local_candidates

2020-08-06 00:12:53 565

v8 version(9.2.99) 2019 静态库和demo

v8 engine 2019 静态库和vs2019可以调试编译的demo

2021-05-10

会议音频音量控制协议rfc6464

本文档定义了一个RTP报头扩展[RFC5285],通过该扩展,音频包的发送者可以指示包的有效负载的音频级别,从而减少服务器的处理负载。

2020-08-04

depot_tools

webrtc windows编译所需要的依赖库,国外无法现在,这个地方快速下载。depot_tools安装

2020-07-30

精易模块ym.rar

精易模块 易语言支持CC代理IP和密码,完美支持,自己修改支持,默认带密码不好使 精易模块 易语言支持CC代理IP和密码,完美支持,自己修改支持,默认带密码不好使

2019-11-29

深入理解OpenStack 原理和实现-pdf电子版本可编辑

OpenStack 原理和实现 本文整理自本人的技术博客中的 Neutron 系列文章。任何疑问、问题或者建议,可以给本人发 邮件或者在我的博文中添加评论。 本系列文章基于 OpenStackJuno 版本,是在参考了大量网络资料的基础上加上自己的理解和 实践而完成的。 OpenStack 在持续快速发展中,Neutron 更是这样,因此,本人会在将来不定期地对博文做修 改,但是应该不会更新本文。

2018-11-01

H264学习资料,高清,带手工目录pdf

1.高清带目录 深入理解视频编解码技术.pdf 2.高清带目录新一代视频压缩编码标准H.264.pdf 3.h264中文标准.pdf H264学习中文资料黄金包

2018-06-07

空空如也

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

TA关注的人

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