I recorded several files with Samsung Voice Recorder and inserted several bookmarks per file. On my phone, they are m4a files. When copied onto my computer, they appear as mpeg4 files.
I need to add these to Powerpoint (one file per slide), and use the bookmarks to trigger animations (ideally with vba), however, the bookmarks don't show up.
Can anyone please help or point me in the right direction? Thanks in advance.
Here is a link to one of the files. This file has 6 bookmarks with the following timing: 00:00, 00:03, 00:04, 00:05, 00:12, 00:24. https://1drv.ms/u/s!AkCe6_YwGEfWgupe2wsCcerSf4nFUw
I have added the final code. The audio files follow a script that have minor variations for specific clients, so the clips are all very close to the same. I added the audio file to each slide then copied the bookmarks from the original audio and applied them to the new file. Thanks!!
'Purpose: Copy media bookmarks and animation settings from a media shape on the same slide to the selected media shape.
'Sources:
' https://stackoverflow.com/questions/54011849/how-can-i-access-samsung-voice-recorder-m4a-bookmarks-after-conversion-to-window
' http://skp.mvps.org/2010/ppt002.htm
Private Sub CopyMediaSettingsToNewItem()
Dim sld As Slide
Dim newShp As Shape
Dim shp As Shape
Dim mf As MediaFormat
Dim z As Long
Dim y As Long
Dim oMBK As MediaBookmark
Dim myMBK As String
Dim myPos As Long
Set sld = ActivePresentation.Slides(ActiveWindow.Selection.SlideRange.SlideIndex)
Set shp = sld.Shapes("Slide 13")
Set mf = shp.MediaFormat
Set newShp = sld.Shapes("Slides(13)")
With newShp
.Top = shp.Top
.Left = shp.Left
.Width = shp.Width
.Height = shp.Height
End With
'Apply the original shape's media format settings to the new shape. The 'noted settings are read-only.
With newShp.MediaFormat
'.AudioCompressionType = shp.MediaFormat.AudioCompressionType
'.AudioSamplingRate = shp.MediaFormat.AudioSamplingRate
'.EndPoint = shp.MediaFormat.EndPoint
.FadeInDuration = shp.MediaFormat.FadeInDuration
.FadeOutDuration = shp.MediaFormat.FadeOutDuration
'.IsEmbedded = shp.MediaFormat.IsEmbedded
'.IsLinked = shp.MediaFormat.IsLinked
'.Length = shp.MediaFormat.Length
.Muted = shp.MediaFormat.Muted
'.Parent = shp.MediaFormat.Parent
'.ResamplingStatus = shp.MediaFormat.ResamplingStatus
'.SampleHeight = shp.MediaFormat.SampleHeight
'.SampleWidth = shp.MediaFormat.SampleWidth
.StartPoint = shp.MediaFormat.StartPoint
.Volume = shp.MediaFormat.Volume
End With
For y = 1 To shp.MediaFormat.MediaBookmarks.Count
Set oMBK = shp.MediaFormat.MediaBookmarks(y)
myMBK = oMBK.Name
Debug.Print "Length: " & shp.MediaFormat.Length
Debug.Print "EndPoint: " & shp.MediaFormat.EndPoint
Debug.Print "Position: " & oMBK.Position
Debug.Print "Name: " & oMBK.Name
'If the last bookmark position of the original shape is past the length of the new media file...
If oMBK.Position > newShp.MediaFormat.Length Then
myPos = newShp.MediaFormat.Length
Else: myPos = shp.MediaFormat.MediaBookmarks(y).Position
End If
With ActiveWindow.Selection.ShapeRange(1)
With .MediaFormat.MediaBookmarks
.Add myPos, myMBK
End With
End With
Next
If shp.MediaType = ppMediaTypeMovie Then
'.VideoCompressionType = shp.MediaFormat.VideoCompressionType
'.VideoFrameRate = shp.MediaFormat.VideoFrameRate
End If
shp.PickupAnimation
newShp.ApplyAnimation
'Dim eff As Effect
'Set eff = sld.TimeLine.MainSequence.AddEffect(newShp, msoAnimEffectMediaPlay, trigger:=msoAnimTriggerAfterPrevious)
'With newShp.AnimationSettings.PlaySettings
'.LoopUntilStopped = msoCTrue
'.PauseAnimation = msoFalse
'.PlayOnEntry = msoCTrue
'.RewindMovie = msoCTrue
'.StopAfterSlides = 999
'.HideWhileNotPlaying = msoTrue
'End With
'Release from memory
Set sld = Nothing
Set newShp = Nothing
Set shp = Nothing
z = 0
y = 0
Set oMBK = Nothing
Set mf = Nothing
myMBK = vbNullString
myPos = 0
End Sub
You can add bookmarks to video or audio using VBA.
For example, assuming you have your audio or video selected:
With ActiveWindow.Selection.ShapeRange(1)
With .MediaFormat.MediaBookmarks
' Add a bookmark at the 5 second mark
.Add 5000, "My bookmark name"
End With ' MediaBookmarks
End With ' Selected Shape