VS2010旗舰版VB.NET版本视频剪辑代码QZQ-2024-8-11

Imports System.IO
Imports System.Diagnostics

Imports System

Public Class VideoEditorForm

Private ffmpegPath As String = "C:\ffmpeg-master-latest-win64-gpl-shared\bin\ffmpeg.exe" '将此路径更改为您的 FFmpeg 实际安装路径

'储选中的视频文件路径
Private selectedVideoPath As String

'剪的起始时间(以秒为单位)
Private cropStartTime As Integer
'剪的结束时间(以秒为单位)
Private cropEndTime As Integer


' 存储选中的文件路径列表
Private selectedFilePaths As New List(Of String)




Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    Dim openFileDialog As New OpenFileDialog()
    openFileDialog.Filter = "Video Files (*.mp4;*.avi;*.mkv; *.wmv)|*.mp4;*.avi;*.mkv; *.wmv"

    If openFileDialog.ShowDialog() = DialogResult.OK Then
        selectedVideoPath = openFileDialog.FileName
    End If
End Sub

Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
    If String.IsNullOrEmpty(selectedVideoPath) Then
        MessageBox.Show("请先选择要保存的视频文件!")
        Exit Sub
    End If

    Dim saveFileDialog As New SaveFileDialog()
    saveFileDialog.Filter = "MP4 Video (*.mp4)|*.mp4|AVI Video (*.avi)|*.avi|MKV Video (*.mkv)|*.mkv"

    If saveFileDialog.ShowDialog() = DialogResult.OK Then
        Dim outputPath As String = saveFileDialog.FileName
        Dim fileExtension As String = Path.GetExtension(outputPath)

        Dim process As New Process()
        process.StartInfo.FileName = ffmpegPath

        Select Case fileExtension.ToLower()
            Case ".mp4"
                process.StartInfo.Arguments = "-i " & Chr(34) & selectedVideoPath & Chr(34) & " -c:v libx264 -c:a aac " & Chr(34) & outputPath & Chr(34)
            Case ".avi"
                process.StartInfo.Arguments = "-i " & Chr(34) & selectedVideoPath & Chr(34) & " -c:v mpeg4 -c:a mp3 " & Chr(34) & outputPath & Chr(34)
            Case ".mkv"
                process.StartInfo.Arguments = "-i " & Chr(34) & selectedVideoPath & Chr(34) & " -c:v copy -c:a copy " & Chr(34) & outputPath & Chr(34)
        End Select

        process.StartInfo.UseShellExecute = False
        process.StartInfo.RedirectStandardOutput = True

        process.Start()

        While Not process.HasExited
            Dim output As String = process.StandardOutput.ReadLine()
            '以在此处理进程的输出信息
        End While
    End If
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    Dim openFileDialog As New OpenFileDialog()
    openFileDialog.Filter = "Video Files (*.mp4;*.avi;*.mkv; *.wmv)|*.mp4;*.avi;*.mkv; *.wmv"

    If openFileDialog.ShowDialog() = DialogResult.OK Then
        selectedVideoPath = openFileDialog.FileName
    End If
End Sub

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
    Dim openFileDialog As New OpenFileDialog()
    openFileDialog.Multiselect = True
    openFileDialog.Filter = "视频文件|*.mp4;*.avi;*.mkv;*.flv;*.wmv"
    If openFileDialog.ShowDialog() = DialogResult.OK Then
        Dim filePaths() As String = openFileDialog.FileNames

        Dim concatListFile As String = Path.GetTempFileName()
        Using sw As New StreamWriter(concatListFile)
            For Each filePath As String In filePaths
                sw.WriteLine("file '" & filePath & "'")
            Next
        End Using

        Dim saveFileDialog As New SaveFileDialog()
        saveFileDialog.Filter = "MP4 Video (*.mp4)|*.mp4|AVI Video (*.avi)|*.avi|MKV Video (*.mkv)|*.mkv"

        If saveFileDialog.ShowDialog() = DialogResult.OK Then
            Dim outputPath As String = saveFileDialog.FileName
            Dim fileExtension As String = Path.GetExtension(outputPath)

            Dim process As New Process()
            process.StartInfo.FileName = ffmpegPath

            Select Case fileExtension.ToLower()
                Case ".mp4"
                    process.StartInfo.Arguments = "-f concat -safe 0 -i " & Chr(34) & concatListFile & Chr(34) & " -c:v libx264 -c:a aac " & Chr(34) & outputPath & Chr(34)
                Case ".avi"
                    process.StartInfo.Arguments = "-f concat -safe 0 -i " & Chr(34) & concatListFile & Chr(34) & " -c:v mpeg4 -c:a mp3 " & Chr(34) & outputPath & Chr(34)
                Case ".mkv"
                    process.StartInfo.Arguments = "-f concat -safe 0 -i " & Chr(34) & concatListFile & Chr(34) & " -c:v copy -c:a copy " & Chr(34) & outputPath & Chr(34)
            End Select

            process.StartInfo.UseShellExecute = False
            process.StartInfo.RedirectStandardOutput = True

            process.Start()

            While Not process.HasExited
                Dim output As String = process.StandardOutput.ReadLine()
                '以在此处理进程的输出信息
            End While
        End If
    End If
End Sub

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
    '择导出保存的路径和格式
    Dim saveFileDialog As New SaveFileDialog()
    saveFileDialog.Filter = "MP4 文件|*.mp4|AVI 文件|*.avi|MKV 文件|*.mkv|FLV 文件|*.flv|WMV 文件|*.wmv"
    If saveFileDialog.ShowDialog() = DialogResult.OK Then
        Dim exportPath As String = saveFileDialog.FileName
        '此处进行导出保存的后续处理
        Console.WriteLine("导出保存的路径: " & exportPath)
    End If
End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    If String.IsNullOrEmpty(selectedVideoPath) Then
        MessageBox.Show("请先选择要裁剪的视频文件!")
        Exit Sub
    End If

    '取用户输入的裁剪起始时间和结束时间
    If Not Integer.TryParse(TextBoxCropStart.Text, cropStartTime) OrElse Not Integer.TryParse(TextBoxCropEnd.Text, cropEndTime) Then
        MessageBox.Show("请输入有效的裁剪时间(整数,以秒为单位)!")
        Exit Sub
    End If

    Dim saveFileDialog As New SaveFileDialog()
    saveFileDialog.Filter = "MP4 Video (*.mp4)|*.mp4|AVI Video (*.avi)|*.avi|MKV Video (*.mkv)|*.mkv"

    If saveFileDialog.ShowDialog() = DialogResult.OK Then
        Dim outputPath As String = saveFileDialog.FileName
        Dim fileExtension As String = Path.GetExtension(outputPath)

        Dim process As New Process()
        process.StartInfo.FileName = ffmpegPath

        Select Case fileExtension.ToLower()
            Case ".mp4"
                process.StartInfo.Arguments = "-i " & Chr(34) & selectedVideoPath & Chr(34) & " -ss " & cropStartTime & " -to " & cropEndTime & " -c:v libx264 -c:a aac " & Chr(34) & outputPath & Chr(34)
            Case ".avi"
                process.StartInfo.Arguments = "-i " & Chr(34) & selectedVideoPath & Chr(34) & " -ss " & cropStartTime & " -to " & cropEndTime & " -c:v mpeg4 -c:a mp3 " & Chr(34) & outputPath & Chr(34)
            Case ".mkv"
                process.StartInfo.Arguments = "-i " & Chr(34) & selectedVideoPath & Chr(34) & " -ss " & cropStartTime & " -to " & cropEndTime & " -c:v copy -c:a copy " & Chr(34) & outputPath & Chr(34)
        End Select

        process.StartInfo.UseShellExecute = False
        process.StartInfo.RedirectStandardOutput = True

        process.Start()

        While Not process.HasExited
            Dim output As String = process.StandardOutput.ReadLine()
            '以在此处理进程的输出信息
        End While
    End If
End Sub

Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
    Dim openFileDialog As New OpenFileDialog()
    openFileDialog.Filter = "Video Files (*.mp4;*.avi;*.mkv; *.wmv)|*.mp4;*.avi;*.mkv; *.wmv"

    If openFileDialog.ShowDialog() = DialogResult.OK Then
        selectedVideoPath = openFileDialog.FileName
    End If
End Sub



Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
    If String.IsNullOrEmpty(selectedVideoPath) Then
        MessageBox.Show("请先选择要裁剪的视频文件!")
        Exit Sub
    End If

    ' 取滑动条的裁剪起始时间和结束时间
    If Not Integer.TryParse(TrackBar1.Value, cropStartTime) OrElse Not Integer.TryParse(TrackBar2.Value, cropEndTime) Then
        MessageBox.Show("请设置有效的裁剪时间(整数,以秒为单位)!")
        Exit Sub
    End If

    Dim saveFileDialog As New SaveFileDialog()
    saveFileDialog.Filter = "MP4 Video (*.mp4)|*.mp4|AVI Video (*.avi)|*.avi|MKV Video (*.mkv)|*.mkv"

    If saveFileDialog.ShowDialog() = DialogResult.OK Then
        Dim outputPath As String = saveFileDialog.FileName
        Dim fileExtension As String = Path.GetExtension(outputPath)

        Dim process As New Process()
        process.StartInfo.FileName = ffmpegPath

        Select Case fileExtension.ToLower()
            Case ".mp4"
                process.StartInfo.Arguments = "-i " & Chr(34) & selectedVideoPath & Chr(34) & " -ss " & cropStartTime & " -to " & cropEndTime & " -c:v libx264 -c:a aac " & Chr(34) & outputPath & Chr(34)
            Case ".avi"
                process.StartInfo.Arguments = "-i " & Chr(34) & selectedVideoPath & Chr(34) & " -ss " & cropStartTime & " -to " & cropEndTime & " -c:v mpeg4 -c:a mp3 " & Chr(34) & outputPath & Chr(34)
            Case ".mkv"
                process.StartInfo.Arguments = "-i " & Chr(34) & selectedVideoPath & Chr(34) & " -ss " & cropStartTime & " -to " & cropEndTime & " -c:v copy -c:a copy " & Chr(34) & outputPath & Chr(34)
        End Select

        process.StartInfo.UseShellExecute = False
        process.StartInfo.RedirectStandardOutput = True

        process.Start()

        While Not process.HasExited
            Dim output As String = process.StandardOutput.ReadLine()
            '以在此处理进程的输出信息
        End While
    End If








End Sub





Private Sub TrackBar1_ValueChanged(ByVal sender As Object, ByVal e As EventArgs)
    cropStartTime = TrackBar1.Value
End Sub

Private Sub TrackBar2_ValueChanged(ByVal sender As Object, ByVal e As EventArgs)
    cropEndTime = TrackBar2.Value
End Sub


Private Sub VideoEditorForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    TrackBar1.Value = 0
    TrackBar2.Value = 0

End Sub

Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
    Dim concatListFile As String = Path.GetTempFileName()
    Using sw As New StreamWriter(concatListFile)
        For Each item As String In ListBox1.Items
            sw.WriteLine("file '" & item & "'")
        Next
    End Using

    Dim saveFileDialog As New SaveFileDialog()
    saveFileDialog.Filter = "MP4 Video (*.mp4)|*.mp4|AVI Video (*.avi)|*.avi|MKV Video (*.mkv)|*.mkv"

    If saveFileDialog.ShowDialog() = DialogResult.OK Then
        Dim outputPath As String = saveFileDialog.FileName
        Dim fileExtension As String = Path.GetExtension(outputPath)

        Dim process As New Process()
        process.StartInfo.FileName = ffmpegPath

        Select Case fileExtension.ToLower()
            Case ".mp4"
                process.StartInfo.Arguments = "-f concat -safe 0 -i " & Chr(34) & concatListFile & Chr(34) & " -c:v libx264 -c:a aac " & Chr(34) & outputPath & Chr(34)
            Case ".avi"
                process.StartInfo.Arguments = "-f concat -safe 0 -i " & Chr(34) & concatListFile & Chr(34) & " -c:v mpeg4 -c:a mp3 " & Chr(34) & outputPath & Chr(34)
            Case ".mkv"
                process.StartInfo.Arguments = "-f concat -safe 0 -i " & Chr(34) & concatListFile & Chr(34) & " -c:v copy -c:a copy " & Chr(34) & outputPath & Chr(34)
        End Select

        process.StartInfo.UseShellExecute = False
        process.StartInfo.RedirectStandardOutput = True

        Try
            process.Start()

            While Not process.HasExited
                Dim output As String = process.StandardOutput.ReadLine()
                ' 在此处理进程的输出信息
            End While
        Catch ex As Exception
            MessageBox.Show("拼接过程中出现错误: " & ex.Message)
        Finally
            process.Dispose()
        End Try
    End If

End Sub

Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
    Dim openFileDialog As New OpenFileDialog()
    openFileDialog.Filter = "Video Files (*.mp4;*.avi;*.mkv; *.wmv)|*.mp4;*.avi;*.mkv; *.wmv"

    If openFileDialog.ShowDialog() = DialogResult.OK Then
        Dim selectedFile As String = openFileDialog.FileName
        ListBox1.Items.Add(selectedFile)
    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、付费专栏及课程。

余额充值