|
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.
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
|
| |
|