Search code examples
androidvbapowerpointmpeg-4m4a

How can I access Samsung Voice Recorder m4a bookmarks after conversion to Windows mpeg4?


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

Solution

  • 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