Visual Studio 2010旗舰版的vb.net版本音频剪辑代码2024-7-15-9-04QZQ

Imports System.IO
Imports NAudio.Wave

Public Class Form1
Private waveFileReader As WaveFileReader
Private waveOutDevice As WaveOut

Private Sub OpenToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles OpenToolStripMenuItem.Click
    Dim openFileDialog As New OpenFileDialog()
    openFileDialog.Filter = "Wave Files (*.wav)|*.wav"


    If openFileDialog.ShowDialog() = DialogResult.OK Then
        Try
            waveFileReader = New WaveFileReader(openFileDialog.FileName)
        Catch ex As Exception
            MessageBox.Show("Error opening file: " & ex.Message)
            Return
        End Try
    End If
End Sub

Private Sub PlayToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles PlayToolStripMenuItem.Click
    If waveFileReader IsNot Nothing Then
        waveOutDevice = New WaveOut()
        waveOutDevice.Init(waveFileReader)
        waveOutDevice.Play()
    Else
        MessageBox.Show("No file opened")
    End If
End Sub

Private Sub StopToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles StopToolStripMenuItem.Click
    If waveOutDevice IsNot Nothing AndAlso waveOutDevice.PlaybackState = PlaybackState.Playing Then
        waveOutDevice.Stop()
    End If
End Sub

Private Sub SaveToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles SaveToolStripMenuItem.Click
    If waveFileReader IsNot Nothing Then
        Dim saveFileDialog As New SaveFileDialog()


        saveFileDialog.Filter = "Wave Files (*.wav)|*.wav|MP3 Files (*.mp3)|*.mp3|WMA Files (*.wma)|*.wma" '持多种音频格式
        If saveFileDialog.ShowDialog() = DialogResult.OK Then
            Try
                Using newWriter As New WaveFileWriter(saveFileDialog.FileName, waveFileReader.WaveFormat)
                    waveFileReader.Position = 0
                    Dim buffer As Byte() = New Byte(waveFileReader.Length - 1) {}
                    waveFileReader.Read(buffer, 0, buffer.Length)
                    newWriter.Write(buffer, 0, buffer.Length)
                End Using
            Catch ex As Exception
                MessageBox.Show("Error saving file: " & ex.Message)
            End Try
        End If
    Else
        MessageBox.Show("No file opened")
    End If
End Sub

Private Sub CloseToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles CloseToolStripMenuItem.Click
    If waveFileReader IsNot Nothing Then
        waveFileReader.Dispose()
        waveFileReader = Nothing
    End If

    If waveOutDevice IsNot Nothing Then
        MsgBox("已经关闭!")
        waveOutDevice.Dispose()
        waveOutDevice = Nothing
    End If
End Sub



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

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    If waveFileReader IsNot Nothing Then
        Dim startSeconds As Double = CDbl(InputBox("请输入裁剪开始时间(秒)"))
        Dim durationSeconds As Double = CDbl(InputBox("请输入裁剪持续时间(秒)"))

        Dim startPosition As Integer = CInt(startSeconds * waveFileReader.WaveFormat.AverageBytesPerSecond)
        Dim length As Integer = CInt(durationSeconds * waveFileReader.WaveFormat.AverageBytesPerSecond)

        Dim croppedFile As Byte() = New Byte(length - 1) {}
        waveFileReader.Position = startPosition
        waveFileReader.Read(croppedFile, 0, length)

        Dim saveFileDialog As New SaveFileDialog()
        saveFileDialog.Filter = "Wave Files (*.wav)|*.wav|MP3 Files (*.mp3)|*.mp3|WMA Files (*.wma)|*.wma" '持多种音频格式

        If saveFileDialog.ShowDialog() = DialogResult.OK Then
            Try
                Using newWriter As New WaveFileWriter(saveFileDialog.FileName, waveFileReader.WaveFormat)
                    newWriter.Write(croppedFile, 0, length)
                End Using
            Catch ex As Exception
                MessageBox.Show("Error saving cropped file: " & ex.Message)
            End Try
        End If
    Else
        MessageBox.Show("No file opened")
    End If
End Sub


Private Sub Button4_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button4.Click
    '开文件对话框,选择单个音频文件
    Dim ofd As New OpenFileDialog() With {
        .Multiselect = False}  '改为只能选择单个文件
    ofd.Filter = "Audio Files|*.mp3;*.wav;*.wma"

    If ofd.ShowDialog() = DialogResult.OK Then
        '选中的单个文件添加到列表框
        ListBoxFiles.Items.Add(ofd.FileName)
    End If
End Sub

Private Sub Button3_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button3.Click
    ' 检查列表框中是否有文件
    If ListBoxFiles.Items.Count = 0 Then
        MessageBox.Show("请先打开一些音频文件。")
        Return
    End If

    ' 创建一个WaveFileWriter来保存合并后的音频
    Dim saveFileDialog As New SaveFileDialog() With {
        .Filter = "WAV Files|*.wav"
    }
    If saveFileDialog.ShowDialog() = DialogResult.OK Then
        Using writer As New WaveFileWriter(saveFileDialog.FileName, New WaveFormat(44100, 16, 2))
            ' 逐个读取并合并音频文件
            For Each file As String In ListBoxFiles.Items
                Using reader As New WaveFileReader(file)
                    ' 将音频数据复制到WaveFileWriter
                    reader.CopyTo(writer)
                End Using
            Next
        End Using
        MessageBox.Show("音频文件合并完成!")
    End If
End Sub

End Class

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EYYLTV

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值