自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (16)
  • 收藏
  • 关注

原创 音频3A测试--AGC(自动增益)和NS(降噪)测试

设备A和设备B安装需要测的app,其中设备B是要进行测试的设备,设备A不做要求,性能满足要求即可 (接收和发送不出现掉帧,测试过程中不出现CPU80%以上)。研究表明,音量对音质的影响是显著的,在其他条件一致的情况下,音量越大,主观听感越好。一台音频处理器(调音台):控制每个通道播放的数据,如噪声、人工头、模拟设备B输入的数据、收集标准麦克风,设备A处理完成的数据;中:3.0:还可以,听不太清楚,有一定延时,有杂音,有轻微失 真,有轻微回声;良:4.0:次好,听得清楚,延时小,有轻微杂音,无回声;

2025-03-04 20:10:44 858

原创 视音频数据处理入门:颜色空间(二)---ffmpeg

d

2025-03-04 12:18:17 1908

原创 音频3A测试--AEC(回声消除)测试

中:3.0:还可以,听不太清楚,有一定延时,有杂音,有轻微失 真,有轻微回声;双讲的评估一直是业界的难题,尽管有单讲的信号作为对比,但语音中残留从能量的角度会影响双讲剪切的客观指标计算,因此对于双讲场景,需要结合双讲回声、可懂度、MOS 分、双讲剪切等多个指标综合进行判断,且纯双讲段的回声残留无法有效计算,只能计算双讲语音间歇出的残留作为参考。搭建好硬件环境,设备B,设备A进入相同的测试会议(测试房间),对比测试需要保证测试环境相同,如:外放音量、采集音量,测试设备的性能;

2025-03-03 13:38:34 342

原创 基于Webrtc m79版本 AGC 算法原理介绍(三)(转)

本系列介绍Webrtc的agc算法。webrtc的agc算法对各种情况作了较为详尽的考虑,而且使用了的定点数的方法来实现,因此内容比较多。尽量在这几篇文章中描述清楚。

2025-02-24 13:37:56 588

原创 基于Webrtc m79版本 AGC 算法原理介绍(二)(转)

本系列介绍Webrtc的agc算法。webrtc的agc算法对各种情况作了较为详尽的考虑,而且使用了的定点数的方法来实现,因此内容比较多。尽量在这几篇文章中描述清楚。

2025-02-24 13:19:58 571

原创 基于Webrtc m79版本 AGC 算法原理介绍(一)(转)

本系列介绍Webrtc的agc算法。webrtc的agc算法对各种情况作了较为详尽的考虑,而且使用了的定点数的方法来实现,因此内容比较多。尽量再这几篇文章中描述清楚。较新的webrtc已经把原来的agc模块移动到了一个叫做legacy的文件夹。这个回头再写文章详细介绍。我还是从旧的agc算法开始讲起。Webrtc 的AGC算法的结构如下gain_control.h是包装的头文件,在apm里头gain_control_impl调用。主要包括了接口定义函数和参数配置。

2025-02-24 12:52:28 384

原创 AEC3 filter部分参数(一)

较短的初始化时间可以在较短时间内启动回声消除器,但可能会导致回声消除器无法收集足够的回声参考信号并建立准确的回声信号模型;参数控制回声消除器初始化的时间,即在开始进行回声消除前,回声消除器需要收集多长时间的回声参考信号并建立回声信号模型。需要注意的是,采用更加保守的相位估计方式可能会对回声消除器的性能和效果产生一定的影响,因此在实际应用中需要根据具体情况进行选择。设置为一个较大的值时,回声消除器将在新的回声路径上持续进行reset,以确保回声消除器的状态尽可能适应新的环境。

2024-10-31 12:28:15 539

原创 webrtc agc2实现原理

该算法首先计算输入信号的功率谱密度,然后根据上一帧噪声能量和当前帧信号能量的差值以及一些参数,估计当前帧的噪声能量。该公式的意义是:目标音量级别减去估计的背景噪声电平和增益余量,就得到了当前帧的增益。综上所述,WebRTC的AGC2根据输入信号的强度自动调整增益,以保证输出信号的音量稳定。其原理包括噪声估计、增益计算、增益平滑、增益范围和等级校准等。WebRTC的AGC2(自适应增益控制器)是一种用于音频处理的算法,可以根据输入信号的强度自动调整增益,使输出信号的音量保持稳定。

2024-10-31 12:27:56 711

原创 unordered_map、unordered_set 底层原理及其相关面试题

但若你对内存使用特别严格,希望程序尽可能少消耗内存,那么一定要小心,unordered_map 可能会让你陷入尴尬,特别是当你的unordered_map 对象特别多时,你就更无法控制了,而且unordered_map 的构造速度较慢。但是,不能够保证每个元素的key与函数值是一一对应的,因此极有可能出现对于不同的元素,却计算出了相同的函数值,这样就产生了“冲突”,换句话说,就是把不同的元素分在了相同的“类”之中。哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,时间复杂度为O(1);

2024-10-31 12:26:34 538

原创 动态规划,就这几个问题最高频!

大家好,我是bigsai,好久不见,甚是想念(天天想念)!很久前就有小伙伴被动态规划所折磨,确实,很多题动态规划确实太难看出了了,甚至有的题看了题解理解起来都费劲半天。动态规划的范围虽然确实是很广很难,但是从整个动态规划出现的频率来看,这几种基础的动态规划理解容易,学习起来压力不大,并且出现频率非常高。这几个常见的动态规划有:连续子数组最大和,子数组的最大乘积,最长递增子序列(LIS),最长公共子序列(LCS),最长公共子串,最长公共子串,不同子序列。首先很多人问,何为动态规划?动态规划。

2024-10-31 12:26:09 979

原创 165. 比较版本号

给你两个版本号 version1 和 version2 ,请你比较它们。版本号由一个或多个修订号组成,各修订号由一个 '.' 连接。每个修订号由 多位数字 组成,可能包含 前导零。每个版本号至少包含一个字符。修订号从左到右编号,下标从 0 开始,最左边的修订号下标为 0 ,下一个修订号下标为 1 ,以此类推。例如,2.5.33 和 0.1 都是有效的版本号。比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较 忽略任何前导零后的整数值。

2023-06-08 23:48:11 155

原创 最简单的视频编码器(二)---ffmpeg

概述流程图源代码代码路径

2021-09-24 16:18:29 2096

原创 最简单的视频编码器(一)---libx264

概述本文记录一个最简单的基于libx264的H.264视频编码器;直接调用libx264完成编码。因此项目的体积非常小巧。该编码器可以将输入的YUV数据编码为H.264码流文件。流程中主要的函数如下所示:x264_param_default():设置参数集结构体x264_param_t的缺省值。x264_picture_alloc():为图像结构体x264_picture_t分配内存。x264_encoder_open():打开编码器。x264_encoder_encode():编码一帧图像

2021-09-11 13:10:46 3296

原创 视音频数据处理入门:颜色空间(一)---转换理解

YUV颜色空间概述YV12与I420颜色空间相互转换NV12与I420颜色空间相互转换NV21与YV12颜色空间相互转换YUV转RGBI420与RGB32颜色空间相互转换I420与RGB24颜色空间相互转换

2021-08-24 20:29:58 1383

原创 视音频数据处理入门:I420 图像90° 、180°、270°旋转和左右镜像翻转

一、旋转原理 图像旋转就是对应像素点的位置的改变,把对应的像素点修改到指定位置即可实现90度、180度、270度旋转。如下图以4x6为例,每个格子代表一个像素点,格子里面的数字代表当前像素的位置; SRC顺时方向旋转90度我们以上图为例,顺时方向旋转90为例,说明旋转90原理;顺时方向旋转90度,则宽和高互换,由原来4x6变为6x4;SRC[0]的位置被SRC[20]所替代,形成Rotate90[0],以此类推;最终形成图Rotate90的效果。...

2021-08-12 14:56:04 4141

原创 Git命令使用出现Cannot update paths and switch to branch xxx at the same time解决方法

产生原因 这个问题产生的原因在切换分支的时候,本地git信息中没有你要拉取的分支信息,一般产生错误是使用如下命令造成的 : $ git checkout -b branch_a origin/develop 或 $ git checkout --track origin/develop解决方法:执行git fetch命令 git fetch $ git checkout -b 分支名字 origin/分支名 ...

2021-08-07 15:13:33 6093 2

原创 Git命令使用出现Automatic merge failed; fix conflicts and then commit the result.解决方法

产生原因 这个问题产生的原因是因为git pull 的时候会分为两步, 1、先从远程服务器上拉下代码; 2、进行merge。merge时候失败了,就会出现“Automatic merge failed; fix conflicts and then commit the result。”解决方法:丢弃本地提交,强制回到线上最新版本 git fetch --all git reset --hard origin/你需要下拉的分支(默认master) gi...

2021-08-04 09:49:34 21314

转载 C++ Lambda表达式基本用法

创建一个匿名函数并执行。Objective-C采用的是上尖号^,而C++ 11采用的是配对的方括号[]。实例如下:#include <iostream>using namespace std; int main(){ []{ cout << "Hello,Worldn"; }();}我们也可以方便的将这个创建的匿名函数赋...

2019-10-15 13:36:00 170

转载 C++ 智能指针 shared_ptr 详解与示例

shared_ptr 是C++11提供的一种智能指针类,它足够智能,可以在任何地方都不使用时自动删除相关指针,从而帮助彻底消除内存泄漏和悬空指针的问题。它遵循共享所有权的概念,即不同的 shared_ptr 对象可以与相同的指针相关联,并在内部使用引用计数机制来实现这一点。每个 shared_ptr 对象在内部指向两个内存位置:1、指向对象的指针。2、用于控制引用计数数据的指针。共享所有...

2019-10-15 09:54:25 1531

转载 C++ 智能指针 unique_ptr 详解与示例

unique_ptr 是 C++ 11 提供的用于防止内存泄漏的智能指针中的一种实现,独享被管理对象指针所有权的智能指针。unique_ptr对象包装一个原始指针,并负责其生命周期。当该对象被销毁时,会在其析构函数中删除关联的原始指针。unique_ptr具有->和*运算符重载符,因此它可以像普通指针一样使用。查看下面的示例:#include <iostream>#i...

2019-10-15 09:33:35 520

转载 Github上传代码菜鸟超详细教程【转】

说来也惭愧,我是最近开始用github,小白一个,昨天研究了一个下午。终于可以上传了,所以今天写点,一来分享是自己的一些经验,二来也是做个记录,万一哪天又不记得了:)  废话不多说,直接来,这次主要介绍的是windows下的安装和使用。  【第一步】建立先仓库  第一步的话看一般的提示就知道了,在github新建一个repository(谷歌可以解决),都是可视化的界面操作,所以难度...

2019-07-30 16:46:42 946

转载 报错 ImportError: No module named model_selection 的解决办法

win10下运行了一段Python代码,出现了报错, 报错是ImportError: No module named model_selection。我定位代码到import sklearn.model_selection,我才知道原来我没有这个model。我在网上找了一下解决方法,原来是scikit-learn的版本太低。在anaconda中通过命令行查看sklearn的版本为 0.17.1...

2018-12-20 09:20:16 1755

原创 OpenCV成长之路 01、图像的读写与显示

一、工具篇工欲善其事,必先利其器。学习OpenCV,肯定少不于基本的编程工具与OpenCV库。在Windows平台下你可以选择Visual Studio、CodeBlock等,当然你也可以选择在Linux平台,用VI、codeBlock都是可以的。编程平台的选择看个人爱好以及项目的开发环境。然后是OpenCV库,你可以在这里下载到最新的版本:http://opencv.org/,最近的版本已经...

2018-12-07 10:46:39 163

转载 Tensorflow和MNIST识别自己手写的数字 finished with exit code -1073740791 (0xC0000409)解决方案

在跑alexnet的测试demo时,遇到无错跳出finished with exit code -1073740791 (0xC0000409),查出是显卡内存不足的问题,解决如下:import osos.environ["CUDA_VISIBLE_DEVICES"] = "-1"    1    2参考链接:(1)https://stackoverflow.com/questi...

2018-11-13 16:17:44 751

转载 pycharm中project使用Anaconda3中自己创建的python环境作为编译器、pycharm运行程序时在Python console窗口中运行解决方法

我们以自己创建的tensorflow环境为例。Anaconda中自己创建的环境都在这个文件夹内:C:\ProgramData\Anaconda3\envs打开pycharm,新建一个project,然后点击File-&gt;Settings-&gt;Project:[当前项目名称],出现下面界面:点击右上角add,添加一个已配置的环境: 这里我们添加了已经创建的te...

2018-11-13 14:32:06 2569 1

转载 Windows桌面共享中一些常见的抓屏技术

1. BitBlt 我想做Windows开发应该都知道这个API, 它能实现DC间的内容拷贝, 如果我们把源DC指定成Monitor DC或是桌面DC, 它就能实现抓屏功能。对于通过这种方式的抓屏, 有2点需要特别提醒:a. 在XP下我们可以通过最后的拷贝标志来控制是否拷贝layered window, 只有SRCCPY表示拷贝内容不包含layered window, 如果是SRC...

2018-11-12 15:09:54 1788

原创 websocket简单介绍(一)

对于websocket的理解,可能我和其他人的理解也是不一样的,简单的来说websocket如果分开那就是web和socket两个,所以websocket便是是浏览器和底层进程正常通信的重要途径,我对websocket的理解是websocket本身是一种协议,浏览器想要和进程进行直接通信那需要首先建立TCP连接,当TCP三四握手成功以后,浏览器会主动向TCP服务端发起一起websocket层的握手...

2018-07-31 09:59:18 542

原创 让你彻底搞懂Websocket原理

一、websocket与httpWebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)首先HTTP有 1.1 和 1.0 之说,也就是所谓的 keep-alive ,把多个HTTP请求合并为一个,但是 Websocket 其实是一个新协议,跟HTTP协议基本没有关系,只是为了兼容现有浏览器的握手规范...

2018-07-31 09:57:31 1134

转载 在Linux下访问Windows共享文件夹

说明以下操作以Ubuntu为例,大家可以参考。我在Ubuntu 14.04和16.04都试过了。Windows共享文件夹如果局域网内有一台Windows主机,将指定文件夹设为共享,就可以在局域网内访问了。如果要从Linux下访问该如何操作呢?使用 mount.cifsWindows共享文件夹使用的协议是SMB/CIFS。因而可以使用Linux下的smbclient在命令行中进行操作。如果想更方便地...

2018-06-11 14:13:09 803

原创 动态获取指定窗口大小 获取鼠标所在窗口的位置,HWND

git中代码测试程序,直接创建VS2013程序代码复制便可编译,实现功能动态获取窗口大小,获取鼠标按键消息,获取鼠标所在窗口的位置,大小,窗口句柄

2017-09-18 11:25:58 8957

原创 音频AAC编码 fmepg3.3.0

文介绍一个最简单的基于FFMPEG的音频编码器。该编码器实现了PCM音频采样数据编码为AAC的压缩编码数据。编码器代码十分简单,但是每一行代码都很重要。通过看本编码器的源代码,可以了解FFMPEG音频编码的流程。本程序使用最新版的ffmpeg库,接下对比着和大家说一下3.0以上版本和2.8的版本区别:m_pCodecCtx->sample_fmt = AV_SAMPLE_FMT_S16; 

2017-08-15 20:36:27 504

翻译 websocket规范 RFC6455 中文版

InternetEngineering Task Force (IETF)                      I. FetteRequest forComments: 6455                                Google,Inc.Category: StandardsTrack                                  A.M

2017-08-04 14:19:41 3726

原创 通过浏览器加载程序选择文件路径方法

希望对像我一样的初学者有帮助

2017-01-09 16:52:19 2233

simplest-encoder.7z

* 本程序实现了简单的ffmpeg视频编码功能; * 支持强制输出关键帧 * 支持动态修改码率 * 目前只开放了I420数据格式编码 * 本程序实现了简单的x264视频编码功能; * 支持强制输出关键帧 * 支持动态修改码率 * 目前只开放了I420数据格式编码

2021-09-23

simplest-encoder-x264

/** * 简单的x264视频编码器 *Simple x264 video encoder * * 梁启东 qidong.liang * 18088708700@163.com * https://blog.youkuaiyun.com/u011645307 * * * 本程序实现了简单的x264视频编码功能; * 支持强制输出关键帧 * 支持动态修改码率 * 目前只开放了I420数据格式编码 *This program realizes a simple x264 video coding function; *Support forced output of key frames *Support dynamic modification of bit rate *At present, only i420 data format coding is open * */

2021-09-08

ColorConversion.zip

 NV12、NV21、YUV420P、YUV422P、RGB24、RGBA相互转换功能;vs2019编译 x64的

2021-08-30

YUV颜色空间转换(YV12、NV12、NV21、I420、RGB等)

本程序实现了简单的YUV数据之间的转换和YUV与RGB的转换。 注:1、本程序只是简单YUV之间的颜色空间转换和YUV与RGB的转换。 2、本程序使用的vs2019创建的,需使用2019打开工程。 3、包含功能: 1)YV12_2_I420; 2)I420_2_YV12; 3)NV12_2_I420; 4)I420_2_NV12; 5)NV21_2_YV12; 6)YV12_2_NV21; 7)I420_2_rgb32; 8)rgb32_2_I420; 9)I420_2_rgb24; 10)rgb24_2_I420。

2021-08-17

I420rotate.7z

介绍I420顺时针90、180、270旋转和镜像翻转代码和测试程序

2021-08-11

live555.7z

使用vs2015编译的live555,已经配置好x86,x64版本

2019-05-16

第一个OpenCV程序

第一个C语言程序都以Hello,World!这种俗套的例程,我们的第一个OpenCV来显示一幅自己喜欢的图像

2018-12-07

cudnn-8.0-windows10-x64-v6.0.zip

cudnn-8.0-windows10-x64-v6.0.zip 对应版本,cuda8.0

2018-11-16

Virtual Audio Devices

虚拟音频设备表示的筛选器图形的呈现和捕获音频的内容。 系统音频驱动程序 (SysAudio) 使用可用的硬件和软件组件来确定要生成的筛选器图形。 有关系统的音频驱动程序的详细信息,请参阅SysAudio 系统驱动程序。 SysAudio 的客户端包括 DirectSound 和WDMAud 系统驱动程序,该程序充当 WDM 音频驱动程序和特定于音频的 Microsoft Windows 多媒体 Api 波形输入、 波形输出、 midiIn、 midiOut、 mixer,以及 (中所述的辅助之间的接口Microsoft Windows SDK 文档)。 KsStudio 实用程序在 Windows 驱动程序工具包 (WDK) 是应用的一种绕过 SysAudio 并允许用户手动构造筛选器图程序。 以下 PnP 设备枚举 SysAudio 以确定如何构建其客户端可能需要的各种音频筛选器图形采用股票已注册的音频硬件和软件组件。 在确定后的筛选器列表关系图,它可以生成从可用的硬件和软件组件,SysAudio 将这些关系图注册为播放、 录制、 MIDI 输入/输出,和混合虚拟音频设备。 SysAudio 保留注册表类别 KSCATEGORY_AUDIO_DEVICE 专用于其虚拟的音频设备。 适配器驱动程序应不能注册此类别中。 SysAudio 客户端可以处理虚拟的音频设备的筛选器工厂相似到硬件或软件组件的筛选器工厂。 当客户端要求实例化虚拟设备上在特定的 pin,SysAudio 自动构造音频图和管理以透明方式与客户端的关系图的内部 pin 连接。 这使客户端将筛选器图视为一个筛选器,从而避免如间筛选器通信的图形管理的复杂性。

2018-09-12

matlab扩展编程 和代码

【作  者】何强 何英 [同作者作品] 【丛 书 名】 其他 【出 版 社】 清华大学出版社 【书 号】 7900641807 【出版日期】 2002 年6月 【内容简介】 本书以MATLAB扩展编程及其应用实例为主线,以MATLAB与C程序、Visual Basic、Excel、网络和系统硬件的接口为核心,采用图文并茂的方式、简捷明快的手法和通俗易懂的语言,配合大量的代码实例以及一个简单的语音识别系统的具体实现,系统介绍了MATLAB的新特性、常用的代码优化方法和功能扩展途径。全书分为3部分,共13章。第1部分(第1章—第6章):MATLAB 6的安装和运行、MatrixVB、Excellink、MATLAB Web Server、MATLAB的数据结构和编程技巧、MATLAB图形用户界面编程:第2部分(第7章—第11章):MATLAB引擎、MATLAB可执行程序、MATLAB C++数学库和图形库、MATLAB Runtime Server、MATLAB访问系统硬件;第3部分(第12章、第13章):MATLAB的录音工具、基于MATLAB的语音识别系统。 本书面向有一定MATLAB、C/C++语言编程基础的理工科学生、科研人 员和教学工作者,既是新手进阶提高的读物,又是中高级MATLAB用户的必备手册。 包含 matlab扩展编程 代码 便与学习和参考

2018-07-21

系统安装软件信息

获取windows上安装的文件目录,工程使用VS2013实现的mfc demo仅供大家参考

2018-05-30

TEST_WINDOES_SIZ

代码程序实现功能动态获取窗口大小,获取鼠标按键消息,获取鼠标所在窗口的位置,大小,窗口句柄,适用于大多数程序开发人员实现windowsAPI

2017-09-18

websocket 协议介绍

webSocket 协议介绍,ppt内容是协议的讲解,对正在研究协议的人有帮助

2017-08-04

ffmpeg.exe使用VS2013调试

仅供ffmpeg.exe调试时使用

2017-07-21

代码实现压缩和解压demo

这个demo实现的是压缩和解压功能,代码容易读写,适用于刚研究压缩和解压小伙伴们,虽然需要3分但是非常值得

2017-02-18

WebSocket demo

这个是我自己研究websocket协议自己写的,感觉可以对大家有所帮助,欢迎大家一起讨论

2017-01-13

空空如也

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

TA关注的人

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