视频压缩,批量插入视频

使用FFmpeg工具压缩视频文件,然后批量插入到Excel中,并确保每个视频对应特定的工作表或单元格位置。

涉及到调用外部命令行工具(FFmpeg)来处理视频文件,以及在Excel中嵌入这些经过压缩的视频。

1. 安装FFmpeg:

确保你的系统上已经安装了FFmpeg,并且它的路径被添加到了系统的环境变量中,以便可以从任何地方通过命令行访问它。


2. 准备数据:

创建一个工作表列出所有需要处理和插入的视频信息,包括原始视频路径、目标视频路径(压缩后的)、工作表名称和单元格位置。

步骤 1: 准备数据

在Excel中创建如下表格:

步骤 2: 编写 VBA 宏

接下来,打开VBA编辑器(按 `Alt + F11`),在“插入”菜单中选择“模块”,然后将下面的代码粘贴进去。

Sub CompressAndInsertVideos()
    Dim ws As Worksheet
    Dim videoListWs As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim originalPath As String
    Dim compressedPath As String
    Dim targetSheetName As String
    Dim targetCell As Range
    
    ' 设置工作表变量为包含视频列表的工作表
    Set videoListWs = ThisWorkbook.Sheets("视频列表") ' 请根据实际情况修改工作表名称
    
    ' 获取最后一行
    lastRow = videoListWs.Cells(videoListWs.Rows.Count, "A").End(xlUp).Row
    
    ' 循环遍历每一行,从第2行开始(假设第一行为标题)
    For i = 2 To lastRow
        ' 获取当前行的视频路径、目标路径、目标工作表名和单元格位置
        originalPath = videoListWs.Cells(i, 1).Value
        compressedPath = videoListWs.Cells(i, 2).Value
        targetSheetName = videoListWs.Cells(i, 3).Value
        Set targetCell = ThisWorkbook.Sheets(targetSheetName).Range(videoListWs.Cells(i, 4).Value)
        
        ' 压缩视频
        Call CompressVideo(originalPath, compressedPath)
        
        ' 插入压缩后的视频
        Call InsertVideo(compressedPath, targetCell)
    Next i
End Sub

Sub CompressVideo(originalPath As String, compressedPath As String)
    Dim cmd As String
    Dim result As Integer
    
    ' 构造FFmpeg命令
    cmd = "ffmpeg -i """ & originalPath & """ -vcodec libx264 -crf 23 -preset veryfast """ & compressedPath & """"
    
    ' 执行命令
    result = Shell(cmd, vbHide)
    
    ' 等待命令完成
    Do While result <> 0
        DoEvents
        result = GetObject("", "WScript.Shell").Exec("tasklist /FI ""PID eq " & result & """").StdOut.ReadAll
        If InStr(result, "INFO: No tasks are running") > 0 Then Exit Do
    Loop
End Sub

Sub InsertVideo(videoPath As String, targetCell As Range)
    Dim shpOle As Object
    On Error Resume Next
    
    ' 检查视频路径是否存在
    If Dir(videoPath) = "" Then
        MsgBox "找不到视频: " & videoPath, vbExclamation, "错误"
        Exit Sub
    End If
    
    ' 插入视频对象
    Set shpOle = targetCell.Worksheet.OLEObjects.Add(Filename:=videoPath, Link:=False, DisplayAsIcon:=True)
    
    With shpOle
        .Top = targetCell.Top
        .Left = targetCell.Left
        .Width = 100 ' 调整宽度
        .Height = 80 ' 调整高度
        '.Object.Verb xlDoubleClicked ' 如果支持的话,激活播放
    End With
    
    On Error GoTo 0
End Sub

执行宏

保存你的VBA代码后,关闭VBA编辑器,返回到Excel。你可以通过点击“开发工具”选项卡上的“宏”按钮来运行这个宏,或者分配给一个快捷键/按钮来执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值