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

Imports System.ComponentModel
Imports System.IO
Imports System.Diagnostics

Public Class Form1
Private WithEvents bgWorker As New BackgroundWorker
Private ffmpegPath As String = “C:\ffmpeg-master-latest-win64-gpl-shared\bin\ffmpeg.exe” 'FMPEG 安装路径

' outputDevice 声明为类级别的私有变量
Private outputDevice As NAudio.Wave.DirectSoundOut

Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    '开音频文件选择框,选择要剪辑的音频文件
    Dim openFileDialog As New OpenFileDialog()
    openFileDialog.Filter = "音频文件|*.mp3;*.wav"
    If openFileDialog.ShowDialog() = DialogResult.OK Then
        '选择的文件路径显示在文本框中
        txtFilePath.Text = openFileDialog.FileName
    End If
End Sub

Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
    '开保存对话框,选择剪辑后的音频文件保存路径
    Dim saveFileDialog As New SaveFileDialog()
    saveFileDialog.Filter = "音频文件|*.mp3;*.wav"
    If saveFileDialog.ShowDialog() = DialogResult.OK Then
        '选择的保存路径显示在文本框中
        txtSavePath.Text = saveFileDialog.FileName
    End If
End Sub

Private Sub Button3_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button3.Click
    '放音频
    If File.Exists(txtFilePath.Text) Then
        '用 SoundPlayer 或 NAudio 库播放选定的音频
        '例:使用 NAudio 播放
        Dim audioFile As New NAudio.Wave.WaveFileReader(txtFilePath.Text)
        outputDevice = New NAudio.Wave.DirectSoundOut()
        outputDevice.Init(New NAudio.Wave.WaveChannel32(audioFile))
        outputDevice.Play()
    Else
        MessageBox.Show("请选择要播放的音频文件")
    End If
End Sub

Private Sub Button4_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button4.Click
    '止音频播放
    '例:使用 NAudio 停止
    If outputDevice IsNot Nothing Then
        outputDevice.Stop()
    End If
End Sub

Private Sub Button5_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button5.Click
    '用 FFMPEG 剪辑音频
    If File.Exists(txtFilePath.Text) Then
        Dim startTime As String = NumericUpDown1.Value.ToString() '辑的开始时间
        Dim endTime As String = NumericUpDown2.Value.ToString() '辑的结束时间
        Dim parameters As String = "-i " & Chr(34) & txtFilePath.Text & Chr(34) & " -acodec copy -ss " & startTime & " -to " & endTime & " " & Chr(34) & txtSavePath.Text & Chr(34)

        '动 FFMPEG 进程
        RunFFMPEGProcess(parameters)
    Else
        MessageBox.Show("请选择要剪辑的音频文件")
    End If
End Sub

Private Sub RunFFMPEGProcess(ByVal parameters As String)
    '动 FFMPEG 进程
    Dim startInfo As New ProcessStartInfo()
    startInfo.FileName = ffmpegPath
    startInfo.Arguments = parameters
    startInfo.UseShellExecute = False
    startInfo.RedirectStandardError = True
    startInfo.CreateNoWindow = True

    Using process As Process = Process.Start(startInfo)
        Using reader As StreamReader = process.StandardError
            '取 FFMPEG 输出信息
            Dim result As String = reader.ReadToEnd()
            Console.WriteLine(result)
        End Using
    End Using
End Sub

Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
    '行耗时的音频处理任务
    '例:在后台线程中调用 FFMPEG 剪辑音频
    Dim startTime As String = NumericUpDown1.Value.ToString() '辑的开始时间
    Dim endTime As String = NumericUpDown2.Value.ToString() '辑的结束时间
    Dim parameters As String = "-i " & Chr(34) & txtFilePath.Text & Chr(34) & " -acodec copy -ss " & startTime & " -to " & endTime & " " & Chr(34) & txtSavePath.Text & Chr(34)

    RunFFMPEGProcess(parameters)
End Sub

Private Sub BackgroundWorker2_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs) Handles BackgroundWorker2.RunWorkerCompleted
    '后台任务完成后的处理
    If e.Error IsNot Nothing Then
        MessageBox.Show("出现错误:" & e.Error.Message)
    Else
        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、付费专栏及课程。

余额充值