流媒体之DirectShow——音频采集


 

一:介绍

音频采集通过Audio Capture Filter,它支持数字和模拟音频信号。一般Audio Capture Filter是个线性器件,Input表示输入源,例如麦克风等,具体行为还要看厂家手册。
 
 

二:设备枚举

设备枚举通过《Basic Tasks》#设备枚举的系统枚举方法。详情参照相关部分。

ICreateDevEnum::CreateClassEnumerator 时候的枚举类型为CLSID_AudioInputDeviceCategory,表示音频采集设备。

 
 

三:Audio Capture Graph

3.1 类型

Audio Capture Graph有以下几种类型:

  • Audio-only AVI file:Audio Capture Filter -> AVI Mux Filter -> File Writer Filter;
  • WAV file:Audio Capture Filter -> WavDest Filter Sample -> File Writer Filter;
  • Windows Media Audio (.wma) file:Audio Capture Filter -> WM ASF Writer Filter.
    Audio Capture Graph 必须包含Multiplexer(多路复用器)和File Writer(文件写入)!因为音频包必须被封装成相应格式,所以需要Multiplexer。

3.2 建立

建立Audio Capture Graph可以通过:

  • Capture Graph Builder
  • 手动创建。
    通过Capture Graph Builder的方法和Video Capture类似,这里主要介绍手动创建的方法。
枚举设备

选择设备,并创建Audio Capture Filter

// 确定输入类型
查询Audio Capture Filter的IAMAudioInputMixer接口
调用put_Enable确定输入类型(输入类型字符串不同,可通过waveOutOpen,mixerOpen and mixerGetLineInfo等方法查询)

创建Multiplexer和File Writer Filter,并添加到Graph

设置File Wirter Filter的文件名称

Example:

IBaseFilter *pSrc = NULL, *pWaveDest = NULL, *pWriter = NULL;
IFileSinkFilter *pSink= NULL;
IGraphBuilder *pGraph;

// Create the Filter Graph Manager.
hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
    IID_IGraphBuilder, (void**)&pGraph);

// This example omits error handling.

// Not shown: Use the System Device Enumerator to create the 
// audio capture filter.

// Add the audio capture filter to the filter graph. 
hr = pGraph->AddFilter(pSrc, L"Capture");

// Add the WavDest and the File Writer.
hr = AddFilterByCLSID(pGraph, CLSID_WavDest, L"WavDest", &pWaveDest);
hr = AddFilterByCLSID(pGraph, CLSID_FileWriter, L"File Writer", &pWriter);

// Set the file name.
hr = pWriter->QueryInterface(IID_IFileSinkFilter, (void**)&pSink);
hr = pSink->SetFileName(L"C:\\MyWavFile.wav", NULL);

// Connect the filters.
hr = ConnectFilters(pGraph, pSrc, pWaveDest);
hr = ConnectFilters(pGraph, pWaveDest, pWriter);

// Not shown: Release interface pointers.

3.3 添加预览

有些Audio Capture Filter并没有提供预览Pin,因此可以在它后边加入Infinite Pin Tee来提供多个输出Pin:
在这里插入图片描述
DirectSound Renderer是默认的Renderer,所以也不需要显式连接。
 
 

四:配置Audio Capture Filter属性

Audio Capture Filter的Input Pin暴露IAMAudioInputMixer接口,如上所属,可以通过接口的put_Enable 方法设置输入源,同样也可以设置高低音和音量值。
采样率和音频格式由驱动决定,可以通过Output Pin的 IAMStreamConfig接口枚举和设置。IAMBufferNegotiation 接口可以设置音频预览的缓存,缓存越小预览延时越小。默认设置为半秒缓存。
 
 
参考:
Audio Capture

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DirectShow采集卡是一种用于视频和音频信号采集的硬件设备。它可以将各种输入信号,如摄像头、录音设备等,转换为数字信号,并传输到计算机上进行处理和编码。 DirectShow采集卡具有以下几个特点: 1. 高质量的图像和音频采集能力:DirectShow采集卡使用先进的视频和音频编解码算法,能够实现高质量的信号采集和处理,可以满足专业级的需求。 2. 多种接口和输入源支持:DirectShow采集卡通常具有多种接口,如USB、PCI、PCIe等,可以与不同类型的计算机进行连接。同时,它还支持多种不同的输入源,如摄像头、HDMI、VGA等,适用于不同的应用场景。 3. 实时传输和监控功能:DirectShow采集卡具有实时传输功能,可以将实时采集的信号传输到计算机上进行实时处理和显示。同时,它还支持监控功能,可以将信号输出到监视器上进行实时观看。 4. 灵活的软件开发支持:DirectShow采集卡通过提供一套丰富的应用接口(API),为开发者提供了灵活的软件开发支持。开发者可以利用这些接口,开发出适用于特定应用的自定义软件,满足各种特殊需求。 5. 广泛的应用领域:DirectShow采集卡广泛应用于多媒体领域,如视频会议、监控系统、直播平台等。它可以满足不同应用场景的需求,并提供稳定可靠的信号采集和处理能力。 综上所述,DirectShow采集卡是一种高质量的视频和音频信号采集设备,具有多种接口和输入源支持,实时传输和监控功能,灵活的软件开发支持,广泛应用于多媒体领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值