打印本文 打印本文 关闭窗口 关闭窗口
VB.NET实现DirectSound9 (7) 录音
作者:武汉SEO闵涛  文章来源:敏韬网  点击数10921  更新时间:2009/4/23 19:00:44  文章录入:mintao  责任编辑:mintao
; ''''-----------------------------------------------------------------------------

        Dim CaptureData As Byte() = Nothing

        Dim ReadPos As Integer

        Dim CapturePos As Integer

        Dim LockSize As Integer

 

        If Nothing Is applicationBuffer Or Nothing Is WaveFile Then

            Return

        End If

        applicationBuffer.GetCurrentPosition(CapturePos, ReadPos)

        LockSize = ReadPos - NextCaptureOffset

        If LockSize < 0 Then

            LockSize += CaptureBufferSize

        End If

        '''' Block align lock size so that we are always write on a boundary

        LockSize -= LockSize Mod NotifySize

 

        If 0 = LockSize Then

            Return

        End If

        '''' Read the capture buffer.

        CaptureData = CType(applicationBuffer.Read(NextCaptureOffset, GetType(Byte), LockFlag.None, LockSize), Byte())

 

        '''' Write the data into the wav file

        Writer.Write(CaptureData, 0, CaptureData.Length)

 

        '''' Update the number of samples, in bytes, of the file so far.

        SampleCount += CaptureData.Length

 

        '''' Move the capture offset along

        NextCaptureOffset += CaptureData.Length

        NextCaptureOffset = NextCaptureOffset Mod CaptureBufferSize '''' Circular buffer

    End Sub ''''RecordCapturedData

 

    Private Sub ListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged

        InputFormat = CType(Formats(ListBox2.SelectedIndex), FormatInfo).format

        Label1.Text = CType(ListBox2.SelectedItem, FormatInfo).format.ToString

    End Sub

    Sub StartOrStopRecord(ByVal StartRecording As Boolean)

        ''''-----------------------------------------------------------------------------

        '''' Name: StartOrStopRecord()

        '''' Desc: Starts or stops the capture buffer from recording

        ''''-----------------------------------------------------------------------------

        If StartRecording Then

            '''' Create a capture buffer, and tell the capture

            '''' buffer to start recording  

            CreateCaptureBuffer()

            applicationBuffer.Start(True)

        Else

            '''' Stop the capture and read any data that

            '''' was not caught by a notification

            If Nothing Is applicationBuffer Then

             

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ...  下一页 >> 

打印本文 打印本文 关闭窗口 关闭窗口