【问题标题】:How to select audio device for recording in C# using MciSendString如何使用 MciSendString 在 C# 中选择音频设备进行录制
【发布时间】:2016-03-27 07:54:05
【问题描述】:

我正在尝试记录来自调制解调器的音频输入,我已设法通过 TAPI api 拨打电话。

我可以使用 MciSendString 录制,但不知道如何选择调制解调器作为音频输入设备(目前默认选择声卡)。

我也可以使用 TAPI 命令进行录制,但我似乎无法让它工作:

http://julmar.com/blog/programming/you-can-be-just-like-the-government-and-record-telephone-conversations-with-tapi-3-1/

任何帮助将不胜感激。

【问题讨论】:

    标签: c# c audio modem tapi


    【解决方案1】:

    您必须先检测所有设备,然后才能从那里选择它。代码是 VB.Net 但你应该能够很容易地翻译它。我认为,在您的情况下,事件处理程序不是必需的。

    找到所有 TAPI 设备:

    Private Sub New()
    fTapi = New TAPI3Lib.TAPI()
    fTapi.Initialize()
    
    fTapi.EventFilter = TAPI_EVENT.TE_CALLNOTIFICATION Or TAPI_EVENT.TE_CALLINFOCHANGE Or TAPI_EVENT.TE_CALLHUB
    
        AddHandler fTapi.Event, AddressOf internalTapiHandler
    
        devices = New List(Of Device)()
        For Each addr As ITAddress In CType(fTapi.Addresses, ITCollection)
          devices.Add(New Device(fTapi, addr))
        Next
    End Sub
    

    您还可以检查设备是否为音频设备:

    Public ReadOnly Property isAudioDevice() As Boolean
          Get
            Return (addr.State = ADDRESS_STATE.AS_INSERVICE) And (CType(addr, ITMediaSupport).MediaTypes And TapiConstants.TAPIMEDIATYPE_AUDIO) = TapiConstants.TAPIMEDIATYPE_AUDIO
          End Get
       End Property
    

    从那里您可以继续使用其他示例代码。

    请注意,由于时间问题,我没有对其进行测试。无论如何,希望这会有所帮助。

    问候

    【讨论】:

    • 我已经尝试过了,但它没有将“USRobotics 56k* USB Modem 5637”作为音频输入。我想要做的甚至可能吗?就像我说的,我可以拨出电话,挂断电话,做一些基本的事情,但似乎无法让其他任何工作。我已经读过 ActiveX 可以处理它,或者我需要一个 PCI 语音卡来接电话线让我直接访问通过卡录制的功能吗?
    • 也许您需要固件更新?产品主页说自固件版本 1.2.23 (usr-emea.com/support/s-prod-template.asp?loc=grmy&prod=5637) 起包含语音支持 -> 数据表链接:support.usr.com/download/datasheets/modem/5637/5637-ds.pdf
    猜你喜欢
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 2017-12-19
    • 2019-03-03
    相关资源
    最近更新 更多