1

VB.Net を使用してオーディオ レコーダーを作成しようとしています。

これが私がやっている方法です:

Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    mciSendString("open new Type waveaudio Alias recsound", "", 0, 0)

    mciSendString("set recsound samplespersec 11025 channels 2 bitspersample 16 alignment 4 bytespersec 44100", vbNullString, 0, 0)
    mciSendString("record capture", vbNullString, 0, 0)

    Label1.Text = "Recording..."

End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

    mciSendString("save recsound c:\recsound.wav", "", 0, 0)

    mciSendString("close recsound", "", 0, 0)

    Label1.Text = "Stopped."

End Sub

問題なく動作します。唯一の問題は、マイクが 2 つあることです。1 つは内蔵型で、もう 1 つは USB 経由で接続されています。2 つ目の方が録音品質がはるかに優れていますが、このアプリケーションは常に内蔵マイクから録音します。

インターネットで検索しましたが、録音デバイスを選択する方法が見つかりません。私が見つけることができた唯一のものは次のとおりです。

Dim DeviceId As Integer = 2

mciSendString("set recsound input " & DeviceId.ToString())

さまざまな値を試してみましたが、役に立ちませんでした。

また、コンピューターで見つかったすべての録音デバイスのすべてのプロパティを正常に一覧表示する次のコードを試しましたが、役立つものは何も見つかりませんでした:

Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click

    Dim objSearcher As New System.Management.ManagementObjectSearcher("SELECT * FROM Win32_SoundDevice")
    Dim objCollection As System.Management.ManagementObjectCollection = objSearcher.Get()

    Me.TextBox1.Text = ""

    For Each obj As ManagementObject In objCollection

        Me.TextBox1.Text &= "---------------------------------" & vbCrLf

        For Each myProperty As PropertyData In obj.Properties

            Me.TextBox1.Text &= myProperty.Name & " - " & myProperty.Value & vbCrLf

        Next

    Next

End Sub

任意の提案をいただければ幸いです。

4

1 に答える 1