OfficeTips Home || VBA Section || General Section || Download Section || Privacy Policy

Media Format and Bookmarks

The new MediaFormat object associated with shapes is really cool. It offers everything that you could need to gather information about the inserted media shape. The code below also shows how to add a bookmark trigger. MediaFormat object has also two methods to resample audio and video in the presentation - Resample and ResampleFromProfile - which allows us to tap into the profile settings available in the compress media drop down.

See also: How to use msoAnimEffectPlayFromBookmark

Supported versions: PowerPoint 2010



Sub MediaInfo()

Dim oShp As Shape

Dim oMBK As MediaBookmark

Dim I As Integer



' Assumes that this shape is either inserted video or audio.



Set oShp = ActiveWindow.Selection.ShapeRange(1)



' Note: Online video is also flagged as mediatype shape

' but it fails on all these properties, only SourceFullName property works

' See *Linked info



If oShp.Type = msoMedia Then

    Debug.Print "Lenght: " & oShp.MediaFormat.Length

    Debug.Print "Start Point: " & oShp.MediaFormat.StartPoint

    Debug.Print "End Point: " & oShp.MediaFormat.EndPoint



    Debug.Print "Fade In Duration: " & oShp.MediaFormat.FadeInDuration

    Debug.Print "Fade Out Duration: " & oShp.MediaFormat.FadeOutDuration



    Debug.Print "Is Embedded: " & oShp.MediaFormat.IsEmbedded

    Debug.Print "Is linked: " & oShp.MediaFormat.IsLinked



    If oShp.MediaFormat.IsLinked Then

        Debug.Print "Movie Source: " & oShp.LinkFormat.SourceFullName '*Linked info

    End If



    Debug.Print "Volume: " & oShp.MediaFormat.Volume

    Debug.Print "Muted: " & oShp.MediaFormat.Muted

    Debug.Print "Audio Compression Type: " & oShp.MediaFormat.AudioCompressionType

    Debug.Print "Audio Audio Sampling Rate: " & oShp.MediaFormat.AudioSamplingRate



    ' Applicable only to video types

    '=====================================================================================

    If oShp.MediaType = ppMediaTypeMovie Then

        Debug.Print "Video Compression Type: " & oShp.MediaFormat.VideoCompressionType

        Debug.Print "Video Frame Rate: " & oShp.MediaFormat.VideoFrameRate



        ' Set poster frame

        Call oShp.MediaFormat.SetDisplayPicture(1000)

        ' Set poster frame from external image.

        Call oShp.MediaFormat.SetDisplayPictureFromFile("C:\Users\Shyam\Pictures\mvp.jpg")



        Debug.Print "Height: " & oShp.MediaFormat.SampleHeight

        Debug.Print "Width: " & oShp.MediaFormat.SampleWidth



        ' Movie Container Shape

        Debug.Print oShp.AutoShapeType

    End If



    '=====================================================================================



    ' It is possible to create bookmarks in the audio/video timeline for the media shape.

    ' You can then trigger an animation when the media hits the bookmark during playback

    ' Pretty cool, eh? 

    ' See the subroutine below this one to see how you can assign a bookmark trigger



    '=====================================================================================



        ' Add media bookmark, position is in milliseconds

        ' Note: Can't assign 2 bookmarks at the same point in the timeline.

        ' Generates error if specified duration is greater than movie duration

        ' Generates error if specified bookmark already exists on the timeline





        Call oShp.MediaFormat.MediaBookmarks.Add(4000, "Bookmark A")

        Call oShp.MediaFormat.MediaBookmarks.Add(8000, "Bookmark B")

        Call oShp.MediaFormat.MediaBookmarks.Add(9000, "Bookmark C")



        'Count the number of bookmarks

        Debug.Print "Bookmark count: " & oShp.MediaFormat.MediaBookmarks.Count

        

        'Retrieve info from the 1st bookmark

        For I = 1 To oShp.MediaFormat.MediaBookmarks.Count

                Set oMBK = oShp.MediaFormat.MediaBookmarks(I)

                Debug.Print oMBK.Index, "Name: " & oMBK.Name, "Position: " & oMBK.Position

        Next



        'Delete all the bookmarks

        For I = oShp.MediaFormat.MediaBookmarks.Count To 1 Step -1

                Set oMBK = oShp.MediaFormat.MediaBookmarks(I)

                oMBK.Delete

        Next

        End If

End Sub





Sub AddBookmarkTrigger()

Dim oShp As Shape         ' Shape with animation that needs to be triggered via bookmark

Dim oShpMovie As Shape    ' Media shape



'Assumes that we have a media shape with 'Bookmark 1' on slide 1 of the presentation

With ActivePresentation.Slides(1)

        Set oShpMovie = .Shapes(1)

        Set oShp = .Shapes(2)

        ' Assign an trigger to shape

        ' if no bookmark name is specified, it will default to 1st. If no bookmark exists then it fails

        Call .TimeLine.InteractiveSequences.Add.AddTriggerEffect(oShp, msoAnimEffectPathCircle, _   

                                msoAnimTriggerOnMediaBookmark, oShpMovie, "Bookmark 1")

End With



End Sub

 

 


Copyright 1999-2022 (c) Shyam Pillai. All rights reserved.