精华内容
下载资源
问答
  • 2018-12-24 16:08:25

    1、一开始在命令行下使用ffmpeg时执行“ffmpeg -list_devices true -f dshow -i dummy ”使用dshow来枚举当前系统上存在的音视频采集设备时,发现中文乱码,后来在老师帮助下,在命令行下执行命令“ chcp 65001” 将windows命令行窗口的编码改为了utf-8编码,就解决了ffmpeg的中文乱码问题,

    2、ffmpeg查看设备的命令:
    ffmpeg -list_devices true -f dshow -i dummy

    3、录音为文件:
    ffmpeg -f dshow -i audio=“麦克风阵列 (11- USB PnP Audio Device)” out.mp3

    4、实时采集音频并播放:
    ffplay -f dshow -i audio=“麦克风阵列 (11- USB PnP Audio Device)”

    5、实时采集音频并播放并绘制实时音频的左右声道的波形:
    ffplay -showmode 1 -f dshow -i audio=“麦克风阵列 (11- USB PnP Audio Device)”

    6、采集摄像头实时视频并实时显示:
    ffplay -showmode 0 -f dshow -i video=“Integrated Webcam”

    参考资料:
    1、运行bat时隐藏cmd窗口_百度知道
    2、Windows下如何一次运行多个命令 - skykingf的专栏 - CSDN博客
    3、Windows 设置CMD命令行编码 - Melon的博客 - CSDN博客
    4、Windows7环境下命令行一次运行多条命令 - automation13的博客 - CSDN博客

    更多相关内容
  • 使用VS+Qt环境,实现Windows音频设备的切换、禁用、启用功能。内含说明文档,和我写这个工程时的参考资料链接。我这里是可以使用的。如果你下载不能使用可以看一下是不是软件环境的问题。愿和大家一起进步。
  • 自动获取音频输入输出设备,选择特定设备后设置成默认自动获取音频输入输出设备,选择特定设备后设置成默认自动获取音频输入输出设备,选择特定设备后设置成默认
  • C语言 在windows 下 调用WIN 库 调用音频 输入设备 麦克风 输出设备 耳机 实现 录音 播放
  • 如何以编程方式启动和操纵小程序。
  • 自动获取音频输入输出设备,选择特定设备后设置成默认
  • C# 写的利用查找句柄切换默认音频~不是利用音频输出,是直接切换,里面是测试代码,打开程序,点击 1-9任意调出,即可获得光标。所以接下来大家应该懂得。
  • windows系统上,设置系统默认音频输出设备。指定音频通过某一固定设备播放
  • 内容索引:C#源码,系统相关,多媒体,声卡 VisualStudio 2008环境开发的一个C#应用程序实例,功能是实现声卡的检测及声音、音频设备属性的设置,调用的是Windows系统的音频属性面板,适合C#初级用户参考。
  • C#控制 指定系统音频输出设备播放音乐,C#控制音量大小,C# 调用 winmm.dll
  • windows代码设置默认音频输出设备

    万次阅读 2017-11-24 11:14:09
    1.windows音频输入设备与输出设备 ...2.有些时候,windows音频播放设备可能有多个,那么如何通过代码设置默认的音频输出设备呢? 法1:利用wave系列函数 新建windows控制台程序,加入如下代码: #include "stdafx.h" #i

    1.windows音频输入设备与输出设备

    1)windows中音频输入设备是指麦克风,如下图:


    2)windows中音频输出设备是指扬声器,如下图:



    2.有些时候,windows音频播放设备可能有多个,那么如何通过代码设置默认的音频输出设备呢?

    法1:利用wave系列函数

    新建windows控制台程序,加入如下代码:

    #include "stdafx.h"
    #include <windows.h>
    #include <mmsystem.h>
    #include <iostream>
    using namespace std;
    #pragma comment(lib, "Winmm.lib")
    
    #ifdef UNICODE
    #define tcout wcout
    #else
    #define tcout cout
    #endif
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	int nSoundCardCount = waveOutGetNumDevs();
    
    	for (int i = 0; i < nSoundCardCount; i++)
    	{
    		WAVEOUTCAPS woc;
    		waveOutGetDevCaps(i, &woc, sizeof(woc));
    
    		tcout << woc.szPname << endl;
    	}
    
    	//waveOutMessage((HWAVEOUT)WAVE_MAPPER,WAVE_MAPPED_DEFAULT_COMMUNICATION_DEVICE,1,0);
    
    	system("pause");
    	return 0;
    }

    这里可以枚举出所有的播放设备,但是要设置默认的播放设备,暂时不知道怎么弄,网上说用waveOutMessage发送一个消息,但是那个消息windows中找不到,而且还是winCE的,所以只好放弃

    法2:利用微软未公布的api实现

    这里要用到PolicyConfig.h和SetDefaultAudioPlaybackDevice,自行添加.h文件和接口即可

    1)PolicyConfig.h内容

    // ----------------------------------------------------------------------------
    // PolicyConfig.h
    // Undocumented COM-interface IPolicyConfig.
    // Use for set default audio render endpoint
    // @author EreTIk
    // ----------------------------------------------------------------------------
    
    
    #pragma once
    
    
    interface DECLSPEC_UUID("f8679f50-850a-41cf-9c72-430f290290c8")
    IPolicyConfig;
    class DECLSPEC_UUID("870af99c-171d-4f9e-af0d-e63df40c2bc9")
    CPolicyConfigClient;
    // ----------------------------------------------------------------------------
    // class CPolicyConfigClient
    // {870af99c-171d-4f9e-af0d-e63df40c2bc9}
    //  
    // interface IPolicyConfig
    // {f8679f50-850a-41cf-9c72-430f290290c8}
    //
    // Query interface:
    // CComPtr<IPolicyConfig> PolicyConfig;
    // PolicyConfig.CoCreateInstance(__uuidof(CPolicyConfigClient));
    // 
    // @compatible: Windows 7 and Later
    // ----------------------------------------------------------------------------
    interface IPolicyConfig : public IUnknown
    {
    public:
    
        virtual HRESULT GetMixFormat(
            PCWSTR,
            WAVEFORMATEX **
        );
    
        virtual HRESULT STDMETHODCALLTYPE GetDeviceFormat(
            PCWSTR,
            INT,
            WAVEFORMATEX **
        );
    
        virtual HRESULT STDMETHODCALLTYPE ResetDeviceFormat(
            PCWSTR
        );
    
        virtual HRESULT STDMETHODCALLTYPE SetDeviceFormat(
            PCWSTR,
            WAVEFORMATEX *,
            WAVEFORMATEX *
        );
    
        virtual HRESULT STDMETHODCALLTYPE GetProcessingPeriod(
            PCWSTR,
            INT,
            PINT64,
            PINT64
        );
    
        virtual HRESULT STDMETHODCALLTYPE SetProcessingPeriod(
            PCWSTR,
            PINT64
        );
    
        virtual HRESULT STDMETHODCALLTYPE GetShareMode(
            PCWSTR,
            struct DeviceShareMode *
        );
    
        virtual HRESULT STDMETHODCALLTYPE SetShareMode(
            PCWSTR,
            struct DeviceShareMode *
        );
    
        virtual HRESULT STDMETHODCALLTYPE GetPropertyValue(
            PCWSTR,
            const PROPERTYKEY &,
            PROPVARIANT *
        );
    
        virtual HRESULT STDMETHODCALLTYPE SetPropertyValue(
            PCWSTR,
            const PROPERTYKEY &,
            PROPVARIANT *
        );
    
        virtual HRESULT STDMETHODCALLTYPE SetDefaultEndpoint(
            __in PCWSTR wszDeviceId,
            __in ERole eRole 
        );
    
        virtual HRESULT STDMETHODCALLTYPE SetEndpointVisibility(
            PCWSTR,
            INT
        );
    };
    
    interface DECLSPEC_UUID("568b9108-44bf-40b4-9006-86afe5b5a620")
    IPolicyConfigVista;
    class DECLSPEC_UUID("294935CE-F637-4E7C-A41B-AB255460B862")
    CPolicyConfigVistaClient;
    // ----------------------------------------------------------------------------
    // class CPolicyConfigVistaClient
    // {294935CE-F637-4E7C-A41B-AB255460B862}
    //  
    // interface IPolicyConfigVista
    // {568b9108-44bf-40b4-9006-86afe5b5a620}
    //
    // Query interface:
    // CComPtr<IPolicyConfigVista> PolicyConfig;
    // PolicyConfig.CoCreateInstance(__uuidof(CPolicyConfigVistaClient));
    // 
    // @compatible: Windows Vista and Later
    // ----------------------------------------------------------------------------
    interface IPolicyConfigVista : public IUnknown
    {
    public:
    
        virtual HRESULT GetMixFormat(
            PCWSTR,
            WAVEFORMATEX **
        );  // not available on Windows 7, use method from IPolicyConfig
    
        virtual HRESULT STDMETHODCALLTYPE GetDeviceFormat(
            PCWSTR,
            INT,
            WAVEFORMATEX **
        );
    
        virtual HRESULT STDMETHODCALLTYPE SetDeviceFormat(
            PCWSTR,
            WAVEFORMATEX *,
            WAVEFORMATEX *
        );
    
        virtual HRESULT STDMETHODCALLTYPE GetProcessingPeriod(
            PCWSTR,
            INT,
            PINT64,
            PINT64
        );  // not available on Windows 7, use method from IPolicyConfig
    
        virtual HRESULT STDMETHODCALLTYPE SetProcessingPeriod(
            PCWSTR,
            PINT64
        );  // not available on Windows 7, use method from IPolicyConfig
    
        virtual HRESULT STDMETHODCALLTYPE GetShareMode(
            PCWSTR,
            struct DeviceShareMode *
        );  // not available on Windows 7, use method from IPolicyConfig
    
        virtual HRESULT STDMETHODCALLTYPE SetShareMode(
            PCWSTR,
            struct DeviceShareMode *
        );  // not available on Windows 7, use method from IPolicyConfig
    
        virtual HRESULT STDMETHODCALLTYPE GetPropertyValue(
            PCWSTR,
            const PROPERTYKEY &,
            PROPVARIANT *
        );
    
        virtual HRESULT STDMETHODCALLTYPE SetPropertyValue(
            PCWSTR,
            const PROPERTYKEY &,
            PROPVARIANT *
        );
    
        virtual HRESULT STDMETHODCALLTYPE SetDefaultEndpoint(
            __in PCWSTR wszDeviceId,
            __in ERole eRole 
        );
    
        virtual HRESULT STDMETHODCALLTYPE SetEndpointVisibility(
            PCWSTR,
            INT
        );  // not available on Windows 7, use method from IPolicyConfig
    };
    

    2)添加头文件和接口

    #include "Mmdeviceapi.h"
    #include "PolicyConfig.h"
    #include "Propidl.h"
    #include "Functiondiscoverykeys_devpkey.h"

    HRESULT SetDefaultAudioPlaybackDevice( LPCWSTR devID )
    {
    	IPolicyConfigVista *pPolicyConfig;
    	ERole reserved = eConsole;
    
    	HRESULT hr = CoCreateInstance(__uuidof(CPolicyConfigVistaClient), 
    		NULL, CLSCTX_ALL, __uuidof(IPolicyConfigVista), (LPVOID *)&pPolicyConfig);
    	if (SUCCEEDED(hr))
    	{
    		hr = pPolicyConfig->SetDefaultEndpoint(devID, reserved);
    		pPolicyConfig->Release();
    	}
    	return hr;
    }

    3)利用上面的接口自己写函数来设置默认输出设备

    这里是自己添加的设置默认输出设备函数(MFC工程)

    //设置默认音频播放设备
    #define  DEF_AUDIO_NAME _T("扬声器")
    
    void InitDefaultAudioDevice()
    {
    	HRESULT hr = CoInitialize(NULL);
    	if (SUCCEEDED(hr))
    	{
    		IMMDeviceEnumerator *pEnum = NULL;
    		// Create a multimedia device enumerator.
    		hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL,
    			CLSCTX_ALL, __uuidof(IMMDeviceEnumerator), (void**)&pEnum);
    		if (SUCCEEDED(hr))
    		{
    			//判断是否是默认的音频设备,是就退出
    			bool bExit = false;
    			IMMDevice  *pDefDevice = NULL;
    			hr = pEnum->GetDefaultAudioEndpoint(eRender, eMultimedia,&pDefDevice);
    			if (SUCCEEDED(hr))
    			{
    				IPropertyStore *pStore;
    				hr = pDefDevice->OpenPropertyStore(STGM_READ, &pStore);
    				if (SUCCEEDED(hr))
    				{
    					PROPVARIANT friendlyName;
    					PropVariantInit(&friendlyName);
    					hr = pStore->GetValue(PKEY_Device_FriendlyName, &friendlyName);
    					if (SUCCEEDED(hr))
    					{
    						CString strTmp = friendlyName.pwszVal;
    						if (strTmp.Find(DEF_AUDIO_NAME) != -1)
    						{
    							bExit = true;
    						}
    						PropVariantClear(&friendlyName);
    					}
    					pStore->Release();
    				}
    				pDefDevice->Release();
    			}
    			if (bExit)
    			{
    				pEnum->Release();
    				return;
    			}
    
    			IMMDeviceCollection *pDevices;
    			// Enumerate the output devices.
    			hr = pEnum->EnumAudioEndpoints(eRender, DEVICE_STATE_ACTIVE, &pDevices);
    			if (SUCCEEDED(hr))
    			{
    				UINT count;
    				pDevices->GetCount(&count);
    				if (SUCCEEDED(hr))
    				{
    					for (int i = 0; i < count; i++)
    					{
    						bool bFind = false;
    						IMMDevice *pDevice;
    						hr = pDevices->Item(i, &pDevice);
    						if (SUCCEEDED(hr))
    						{
    							LPWSTR wstrID = NULL;
    							hr = pDevice->GetId(&wstrID);
    							if (SUCCEEDED(hr))
    							{
    								IPropertyStore *pStore;
    								hr = pDevice->OpenPropertyStore(STGM_READ, &pStore);
    								if (SUCCEEDED(hr))
    								{
    									PROPVARIANT friendlyName;
    									PropVariantInit(&friendlyName);
    									hr = pStore->GetValue(PKEY_Device_FriendlyName, &friendlyName);
    									if (SUCCEEDED(hr))
    									{
    										// if no options, print the device
    										// otherwise, find the selected device and set it to be default
    										CString strTmp = friendlyName.pwszVal;
    										if (strTmp.Find(DEF_AUDIO_NAME) != -1)
    										{
    											SetDefaultAudioPlaybackDevice(wstrID);
    											bFind = true;
    										}
    										PropVariantClear(&friendlyName);
    									}
    									pStore->Release();
    								}
    							}
    							pDevice->Release();
    						}
    
    						if (bFind)
    						{
    							break;
    						}
    					}
    				}
    				pDevices->Release();
    			}
    			pEnum->Release();
    		}
    	}
    	CoUninitialize();
    }
    

    需要设置哪一个输出设备,自己修改宏的内容即可



    展开全文
  • 本人使用qt5.8,界面简单测试(录音和放音音量及静音设置),封装好了一个类(manager里有写),可以调节应用的混声器音量,或进行静音设置,本人测试没问题,如有问题愿深入交流及时更正。
  • StreamDeck-AudioSwitch是Elgato StreamDeck的C ++插件,用于设置默认音频设备。 它支持: 设置输入或输出设备 设置默认设备或通讯设备 每个设备一个按钮,或一个按钮在两个设备之间切换 例如,如果耳机和扬声器...
  • 在macOS,Windows,iOS和Linux上可作为独立应用程序使用,在macOS和Windows上可作为音频插件(AU,VST)使用。 在台式机,DAW或移动设备上使用它。 易于设置和使用,但仍提供音频书呆子想要看到的所有详细信息。 ...
  • 内录音频Windows系统)

    千次阅读 2020-12-26 00:00:00
    1、右击 Windows 桌面右下角的喇叭图标,选择“打开声音设置”。 2、找到并打开“声音控制面板”。 3、点击“录制”选项卡,右击启用“立体声混音”,并“设置为默认设备”,点击确定按钮退出。 提示:如果没有...

    有时需要将电脑上听到的声音录制下来。比如,在网上听到一首好歌或者视频里的某段音乐,但由于种种原因无法下载时,我们可以通过电脑内录的方法将其录制下来。

    提示:内录下来的音乐也要注意版权问题。

      ◆  ◆

    设置

    要进行电脑内录之前,必须先要进行一些设置。

    1、右击 Windows 桌面右下角的喇叭图标,选择“打开声音设置”。

    2、找到并打开“声音控制面板”。

    3、点击“录制”选项卡,右击启用“立体声混音”,并“设置为默认设备”,点击确定按钮退出。

    提示:如果没有出现“立体声混音”,这说明声卡可能比较老旧,或者声卡未安装官方最新驱动,或者此项被某些系统优化软件给禁用了。

    4、再次右击 Windows 右下角喇叭图标,选择“打开声音设置”,在“选择输入设备”栏确认为“立体声混音”。

    5、点击下方的“设备属性”,调整“音量”,一般可调到 90 左右。

    此时,还可进行音量大小测试。

    提示:以上的设置一般进行一次即可。若后续更改了设置,则再重做一遍即可。

      ◆  ◆

    内录

    方法一:使用系统自带的录音机

    点击 Windows 桌面左下角的搜索按钮(快捷键:Win + S),搜索并打开“录音机”。

    点击录音按钮开始内录。

    提示:

    (1)由于录音结束后还可以简单编辑,比如裁剪等,故建议先点击录音按钮后,再去播放要录的音频。

    (2)录音过程中,尽量不要再进行其它的电脑操作,包括调整音量大小。

    (3)录制完成后,可进行简单的裁剪、重命名等工作。

    (4)Windows 录音机默认的录制音频文件格式为 .m4a。

    方法二:使用 Adobe Audition

    1、打开 Au 后,进入“首选项/音频硬件”,确认“默认输入”是否是“立体声混音”,且处于工作状态。

    2、点击红色的录音按钮,开始录制。

    提示:

    (1)Au 可以更直观地看到录制电平,最高电平建议在 -6dB 左右。 

    (2)录制完成后,可导出为各种音频格式的文件。Au菜单:文件/导出/文件。

    方法三:使用 Audacity

    Audacity 是一款功能强大、免费的音频软件,能满足日常音频处理的需要。请参阅《使用 Audacity 录音》。

    “有钱的捧个钱场,好看的点下在看”

    展开全文
  • Windows上的音频采集技术

    千次阅读 2018-03-06 12:17:18
    1.Windows上的音频采集技术转载:...之前一直没有研究过音频的相关技术,这次就顺便抽出一点时间去了解了一下Windows上采集音频的相关技术。对于音频处理的技术,主要有如下几种:采集麦克风输入采...

    1.Windows上的音频采集技术

    转载:http://blog.csdn.net/wxl1986622/article/details/44230149 谢谢版主

    前一段时间接到一个任务,需要采集到声卡的输出信号,以便与麦克风的输入信号进行混音。

    之前一直没有研究过音频的相关技术,这次就顺便抽出一点时间去了解了一下Windows上采集音频的相关技术。

    对于音频处理的技术,主要有如下几种:

    • 采集麦克风输入
    • 采集声卡输出
    • 将音频数据送入声卡进行播放
    • 对多路音频输入进行混音处理

    1.Windows上音频处理的API

    在Windows操作系统上,常用的音频处理技术主要包括:Wave系列API函数、DirectSound、Core Audio。

    其中,Core Audio只可以在Vista以上(包括Vista)的操作系统中才能使用,主要用来取代Wave系列API函数和DirectSound。

    Core Audio实现的功能也比较强大,能实现对麦克风的采集、声卡输出的采集、控制声音的播放。

    而Wave系列的API函数主要是用来实现对麦克风输入的采集(使用WaveIn系列API函数)和控制声音的播放(使用后WaveOut系列函数)。

    DirectSound能够实现的功能估计和Wave系列API差不多,可能会更强一些(由于没有使用过DirectSound,不太肯定!)。

    为了实现采集模块对操作系统的兼容性更好,基本上对麦克风输入的采集使用WaveIn系列API函数比较多;

    在Windows XP系统中,没有直接提供对声卡输出进行采集的API,因此,在Windows XP要实现对声卡输出的采集会比较麻烦。 通常可选用支持混音的声卡,然后通过使用声卡的混音模块来实现采集,但并不是所有的声卡都支持混音的功能,这样的方案不具备通用性。

    要实现通用性,可以采用虚拟声卡的方式来实现,从驱动层获取声卡的输出数据,但这种方案实现难度会比较大。

    而在Vista以上的系统中,如Win7,则可以使用Core Audio中的API函数来实现采集声卡输出的功能。

    对于混音模块的实现,目前基本是使用自定义的混音算法来完成功能,系统没有直接的API函数可供调用。

    2.使用WaveIn系列API函数实现麦克风输入采集

    涉及的API函数:

    • waveInOpen

      开启音频采集设备,成功后会返回设备句柄,后续的API都需要使用该句柄

      调用模块需要提供一个回调函数(waveInProc),以接收采集的音频数据

    • waveInClose

      关闭音频采集模块

      成功后,由waveInOpen返回的设备句柄将不再有效 

    • waveInPrepareHeader

      准备音频采集数据缓存的空间

    • waveInUnprepareHeader

      清空音频采集的数据缓存

    • waveInAddBuffer

      将准备好的音频数据缓存提供给音频采集设备

      在调用该API之前需要先调用waveInPrepareHeader

    • waveInStart

      控制音频采集设备开始对音频数据的采集

    • waveInStop

      控制音频采集设备停止对音频数据的采集

    音频采集设备采集到音频数据后,会调用在waveInOpen中设置的回调函数。

    其中参数包括一个消息类型,根据其消息类型就可以进行相应的操作。

    如接收到WIM_DATA消息,则说明有新的音频数据被采集到,这样就可以根据需要来对这些音频数据进行处理。

    (示例以后补上)

    3.使用Core Audio实现对声卡输出的捕捉

    涉及的接口有:

    • IMMDeviceEnumerator

    • IMMDevice

    • IAudioClient

    • IAudioCaptureClient

    主要过程:

    • 创建多媒体设备枚举器(IMMDeviceEnumerator)

    • 通过多媒体设备枚举器获取声卡接口(IMMDevice)

    • 通过声卡接口获取声卡客户端接口(IAudioClient)

    • 通过声卡客户端接口(IAudioClient)可获取声卡输出的音频参数、初始化声卡、获取声卡输出缓冲区的大小、开启/停止对声卡输出的采集

    • 通过声卡采集客户端接口(IAudioCaptureClient)可获取采集的声卡输出数据,并对内部缓冲区进行控制

    (示例以后补上)

    4.常用的混音算法

    混音算法就是将多路音频输入信号根据某种规则进行运算(多路音频信号相加后做限幅处理),得到一路混合后的音频,并以此作为输出的过程。

    我目前还做过这一块,搜索了一下基本有如下几种混音算法:

    • 将多路音频输入信号直接相加取和作为输出

    • 将多路音频输入信号直接相加取和后,再除以混音通道数,防止溢出

    • 将多路音频输入信号直接相加取和后,做Clip操作(将数据限定在最大值和最小值之间),如有溢出就设最大值

    • 将多路音频输入信号直接相加取和后,做饱和处理,接近最大值时进行扭曲

    • 将多路音频输入信号直接相加取和后,做归一化处理,全部乘个系数,使幅值归一化

    • 将多路音频输入信号直接相加取和后,使用衰减因子限制幅值

    2、如何抓取扬声器的声音

    转载:http://www.cppblog.com/weiym/archive/2014/08/21/208087.html  谢谢版主

    工作中有个需求是关于抓取扬声器的声音, 为什么会有这个需求? 
    试想我们在共享远程桌面时,如果能够把本地桌面应用程序的声音也一起发给对方, 用户体验该是多么棒。

    在考虑如何实现这个需求前,我们先讨论下电脑声音的三种模式:

    1) render模式
    该方式实际上就是播放(output)声音,常见的API如PlaySound, WaveOutXXX, DirectSound等

    2) capture模式
    该方式实际上就是录入(input)声音, 也就是我们通过麦克风输入声音,常见API如WaveInXXX

    3)loopback模式
    该方式就是我们需要实现的方式,即把扬声器里播放的声音抓取下来。

    对于上面3种方式,render和capture方式应该比较好理解, 也都是系统有API直接支持的方式, loopback方式就比较奇怪了,在XP上该方式系统实际都没有正式支持, loopback的录制方式实际上也涉及到CD的版权问题。

    下面是XP时代的Audio架构图, 该架构下audio的合成和压缩都是在系统内核里进行的:
    在XP这种方式下,我们要抓去声卡播放的声音没有正规的方式, 一般来说只有2中: 
    一种是虚拟声卡,还有一种就是Hook audio 播放相关的API (很多时候我们会发现API hook是没有办法时的全能办法 ^_^)

    但是在Vista之后,微软修改了原来的媒体架构, 以COM的方式重新封装了core audio API:
    可以看到原来Auido的API (waveXXX, mixerXXX和DirectSound)都依赖下层的新封装的Core Audio APIs,而且这些APi都工作在用户模式, 也就是说声音的合成是在用户模式下通过软件实现的。在Vista之后, 可以看到我们可以单独控制每个应用程序的声音了, 因为每路Audio都可以工作在不同的Audio session了。通过新的Core Audio API, 我们可以很容易的实现声卡声音的抓取, 具体可参考这里: http://msdn.microsoft.com/en-us/library/ms679146.aspx

    但是很快我们又发现了另外一个问题, 在一个网络会议里面, 如果共享自己桌面的人加入了VOIP, 另外也有其他与会者也加入了VOIP, 与会者说话的声音会在共享桌面端播放出来,但是该声音和共享的应用程序的声音又被一起被抓下来后发给了原来的与会者, 这样就有回声了。

    这里就涉及到抓取声卡声音时能否排除掉某个声音,可惜答案是系统WASAPI不支持这种方式。但是因为与会者VOIP的声音是我们自己播放的,所以我们有该声音样本, 理论上我们可以通过噪声消除从混音里过滤掉与会者的声音,当然这块知识太高深,需要专门的人才能做了。
     一些Audio相关的例子: http://msdn.microsoft.com/zh-cn/subscriptions/downloads/dd316764.aspx

     个人写的一个小Demo: AudioRecord
    展开全文
  • Windows远程连接电脑怎么配置远程音频
  •  Windows NT:包含一个以NULL结尾的字符串,如“Service Pack 3”,就表明系统上安装了最新的Service Pack。如果没有安装Service Pack,该字符串为空。  Windows 95:包含一个以NULL结尾的字符串,提供了对操作...
  • Windows 麦克风音频采集 PCM、G711a格式

    千次阅读 2021-01-20 15:22:37
    windows.h> #include "G711Codec.h" #ifndef _INC_MMSYSTEM #pragma warning(disable: 4201) #include <mmsystem.h> #endif #pragma comment(lib, "winmm.lib") #define BUFFER_SIZE 1024 #define P.
  • 现在已经进入win10系统的时代了,越来越多的win7用户开始升级win10系统,很多刚升级win10的用户肯定有很多功能和应用还不熟练,而且有可能还会遇到一些系统升级带来的问题,比如说升级之后电脑的音频服务未响应,...
  • windows系统下,有多个音频输出设备,可以更改控制默认的音频设备输出,绝对可用!!!!!!!!
  • 安装程序可以自动化将流行的解码器安装好,不需要任何设置和调整即可使用windows media player或media center播放你的媒体文件。windows 8 codecs不包含播放器,也不会改变你的文件关联属性 Windows 8 Codecs是为...
  • 更多windows11系统教程可以参考小白重装网。 Win11开启空间音效的方法 1、按Win 键,或点击任务栏上的开始图标,再点击已固定应用下的设置; 2、系统设置窗口,找到并点击声音(音量级别、输出、输入、声音设备);...
  • 该程序旨在帮助您自定义Windows 11,包括安全设置和卸载Windows软件该程序旨在帮助您自定义Windows 11,包括安全设置和卸载Windows软件。 Windows 11 Fixer是一个旨在帮助您尽可能轻松地自定义Windows 11的程序。 ...
  • 有不少windows10系统用户在使用过程中,出现了音频服务未响应的情况,影响了正常使用,经过分析可能是驱动或设置有问题或者硬件外设没弄好引起,本教程就给大家带来windows10系统中音频服务未响应的解决方法。...
  • windows平台下音量调节主要分两种情况,一种是调节操作系统的音量,即是相当于操作电脑右下角的声音调节,另一种是调节当前应用程序的音量或者当前播放的音频的音量。具体使用那种方式实现,可以根据个人项目中的...
  • "Windows音频驱动"翻译系列总目录:https://blog.csdn.net/danteLiujie/article/details/102530417 翻译自: ...
  • realtek高清晰音频管理器64/32位v2.8.2英文名称realtekhighdefinitionaudio声卡驱动,支持win10、win7、win8、win8.1、xp等操作系统使用,怎么设置?在哪?请看下面的图文教程就知道了的。软件特色操作简单realtek高...
  • 用于Plex的批处理音频和字幕切换器。 概述 一种脚本,用于在季节或系列级别更改电视节目的默认音频和字幕流。 在为剧集选择了首选的音频和字幕轨道后,此脚本将尝试在您指定的其余剧集中查找相似的轨道,如果找到...
  • "Windows音频驱动"翻译系列总目录:https://blog.csdn.net/danteLiujie/article/details/102530417 原文时间是:2017/04/20, 适用对象是Windows 10 APO最初是在Windows Vista中引入的,您可能会看到对早期系统APO-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 54,777
精华内容 21,910
关键字:

windows音频设置