1

I want to change the video format of the embedded videos that appears in a presentation. I achieve to export the video file to another folder using the following code:

        Dim Finame As Variant
        Dim oApp As Object
        Dim StoreFolder As Variant
        Dim Videoname As Variant
        Dim FileNameFolder As Variant

        MkDir "C:\template\videoZip"

        Set oApp = CreateObject("Shell.Application")
        FileNameFolder = "C:\template\videoZip\"
        Finame = ActivePresentation.Path & "\" & ActivePresentation.Name
        StoreFolder = "C:\template\created_files\"
        oApp.Namespace("C:\template\videoZip\").CopyHere Finame
        Name "C:\template\videoZip\" & ActivePresentation.Name As "C:\template\videoZip\" & ActivePresentation.Name & ".zip"


        oApp.Namespace(FileNameFolder).CopyHere oApp.Namespace("C:\template\videoZip\" & ActivePresentation.Name & ".zip").items

        Dim firstCount As Integer
        Dim lastCount As Integer

        For j = 1 To videoNum
            firstCount = oApp.Namespace(StoreFolder).items.count
            Videoname = "C:\template\videoZip\ppt\media\media" & j & ".mp4"
            oApp.Namespace(StoreFolder).CopyHere Videoname
            lastCount = oApp.Namespace(StoreFolder).items.count
            If firstCount = lastCount Then
                MsgBox "The video has problems loading and it will not be shown (Only mp4 supported)"
            End If
        Next j

        Set objFSO = CreateObject("Scripting.FileSystemObject")
        objFSO.deletefolder "C:\template\videoZip"
    End If

As I said, with this peace of code I can get all the videos that are in the presentation. Now I want to change the format of them. I heard that it is possible using ffmpeg. Other solutions to change format are welcome too.

Martijn Pieters
  • 1,048,767
  • 296
  • 4,058
  • 3,343
Iban Arriola
  • 2,526
  • 9
  • 41
  • 88

1 Answers1

2

At least on Linux the syntax for converting your video files would be

ffmpeg -i media1.mp4 media1.avi

Then you have numerous options to play with size, codecs, trimming etc. See the ffmpeg documentation for that.

There is a thread on SO about executing shell commands and waiting until they return.

Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1
Dim errorCode As Integer
wsh.Run("C:\pathto\ffmpeg.exe -i media1.mp4 media1.avi", windowStyle, waitOnReturn)
Community
  • 1
  • 1
T C
  • 304
  • 1
  • 2
  • 12
  • Just a little remark for the people who want to use it the last line is as following: wsh.Run("C:\pathto\ffmpeg.exe" -i "media1.mp4" "media1.avi"), windowStyle, waitOnReturn – Iban Arriola Jun 14 '13 at 08:11