1. 유튜브 등에서 영상에 대한 자막을 다운로드합니다.(다운받은 자막은 개인적인 용도로만 사용할 것!)

 

https://downsub.com/
 
위 사이트에 유튜브 주소를 붙여넣고 언어를 선택해서 다운로드 받습니다.

 

.SRT자막은 텍스트파일로 일반적으로 아래와 같은 형식입니다.

1
00:00:11,626 --> 00:00:15,470
불꺼진 romantic all my life

2
00:00:15,837 --> 00:00:19,376
내 주위는 온통 lovely day

3
00:00:19,673 --> 00:00:23,813
내 눈 속에 비친 arrow sign

 
 
2. 파워포인트에 유튜브 영상 등을 다운로드 받아 삽입합니다. (다운받은 영상은 개인적인 용도로만 사용할 것!)
youtube.com/1234abcd 를 youtubepp.com/1234abcd 로 접속해서 해상도를 골라서 다운로드 합니다.

 
3. 비디오를 삽입하고 Alt-F10누르고 영상의 이름은 Media 1 로 하고 자동재생 설정합니다.

나중에 자동재생 설정하면 자막 애니메이션보다 영상이 나중에 시작해서 책갈피가 작동하지 않습니다.

 
4. Alt-F11 창에 모듈을 추가하고 아래코드를 넣고 실행합니다.

더보기
'//convert .SRT subtitles to audio/video bookmarked Powerpoint animations
Sub SRT2BookmarkedAnimations()
    
    Dim pres As Presentation
    Dim handle As Integer
    Dim srtFile As String
    Dim Lines() As String, buffer As String
    Dim l As Integer, p As Integer, SW!, SH!
    Dim pStart As String, pEnd As String, dur As Long
    Dim sld As Slide, media As Shape, eft As Effect, shp As Shape
    Dim bmark As MediaBookmark
    
    Set pres = ActivePresentation
    
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Choose a .SRT file"
        .Filters.Clear
        .Filters.Add "SRT subtitle file", "*.srt"
        .InitialFileName = pres.Path & "\"
        .AllowMultiSelect = False
        If .Show = -1 Then srtFile = .SelectedItems(1)
    End With
    
    If srtFile = "" Then Exit Sub
    
    handle = FreeFile
    
    Open srtFile For Input As #handle
    Do Until EOF(handle)
        Line Input #handle, buffer
        l = l + 1
        ReDim Preserve Lines(1 To l)
        Lines(l) = buffer
    Loop
    Close #handle
    
    '1
    '00:00:11,626 --> 00:00:15,470
    '불꺼진 romantic all my life
    
    With pres.PageSetup
        SW = .SlideWidth: SH = .SlideHeight
    End With
    Set sld = ActiveWindow.View.Slide
    Set media = sld.Shapes("Media 1")
    If media.MediaFormat.MediaBookmarks.Count > 0 Then RemoveBookMarks
    
    
    For l = 1 To UBound(Lines)
    
        If InStr(Lines(l), "-->") Then
            
            p = p + 1
            
            If p > 256 Then MsgBox "At most, 512 media bookmarks can be added"
            
            '나타날 시간
            buffer = Trim(Split(Lines(l), "-->")(0))
            pStart = Split(buffer, ",")(0)
            pStart = CStr(Hour(pStart) * 3600 + Minute(pStart) * 60 + Second(pStart)) & Split(buffer, ",")(1)
            
            '북마크 추가
            Set bmark = media.MediaFormat.MediaBookmarks.Add(getSafeBmark(media, CLng(pStart)), "Bookmark_" & p & "_S")
            
            '텍스트 추가
            Set shp = sld.Shapes.AddTextbox(msoTextOrientationHorizontal, 0, SH - 100, SW, 100)
            shp.Name = "Text_" & p
            With shp.TextFrame2.TextRange
                .Text = Lines(l + 1)
                .Font.NameFarEast = "카페24 써라운드"
                .Font.Size = 35
                .Font.Bold = msoTrue
                .Font.Fill.ForeColor.RGB = rgbWhite
                .Font.Line.ForeColor.RGB = rgbBlack
                .Font.Line.Weight = 0.5
            shp.TextFrame2.HorizontalAnchor = msoAnchorCenter
            End With
            
            '나타내기
            Set eft = sld.TimeLine.InteractiveSequences.Add.AddTriggerEffect(pShape:=shp, effectId:=msoAnimEffectFade, _
            Trigger:=msoAnimTriggerOnMediaBookmark, pTriggerShape:=media, bookmark:="Bookmark_" & p & "_S")
            eft.Timing.Duration = 0.5

'// ******************
            
            '사라질 시간
            buffer = Trim(Split(Lines(l), "-->")(1))
            pEnd = Split(buffer, ",")(0)
            pEnd = CStr(Hour(pEnd) * 3600 + Minute(pEnd) * 60 + Second(pEnd)) & Split(buffer, ",")(1)
            
            '색칠하기 추가
            Set eft = sld.TimeLine.InteractiveSequences.Add.AddTriggerEffect(pShape:=shp, effectId:=msoAnimEffectBrushOnColor, _
            Trigger:=msoAnimTriggerOnMediaBookmark, pTriggerShape:=media, bookmark:="Bookmark_" & p & "_S")
            
            dur = (CLng(pEnd) - CLng(pStart) - 1000) / 1000
            If dur <= 0.1 Then dur = 0.1
            eft.Timing.Duration = dur
            eft.EffectParameters.Color2.RGB = rgbOrange
            eft.Timing.TriggerType = msoAnimTriggerAfterPrevious
            
            
            '북마크 추가
            Set bmark = media.MediaFormat.MediaBookmarks.Add(getSafeBmark(media, CLng(pEnd)), "Bookmark_" & p & "_E")
                       
            '사라지기
            Set eft = sld.TimeLine.InteractiveSequences.Add.AddTriggerEffect(pShape:=shp, effectId:=msoAnimEffectFade, _
            Trigger:=msoAnimTriggerOnMediaBookmark, pTriggerShape:=media, bookmark:="Bookmark_" & p & "_E")
            eft.Timing.Duration = 0.5
            eft.Exit = msoTrue
            
            
        End If
    
    Next l

End Sub

'return safe bookmark position
Function getSafeBmark(oMedia As Shape, bmk As Long) As Long
    Dim mb As MediaBookmark
    Dim Found As Boolean
    
    getSafeBmark = bmk
    For Each mb In oMedia.MediaFormat.MediaBookmarks
    
        If mb.Position = bmk Then
            Found = True: Exit For
        End If
    Next mb
    If Found Then getSafeBmark = bmk + 1
End Function

Private Sub RemoveBookMarks()

    Dim shp As Shape
    Dim i As Integer, k As Integer
    
    Set shp = ActiveWindow.Selection.ShapeRange(1)
    If shp.Type <> msoMedia Then MsgBox "select a media": Exit Sub
    
    With shp.MediaFormat.MediaBookmarks
        For i = .Count To 1 Step -1
            'Debug.Print .Item(i).Position
            .Item(i).Delete
            k = k + 1
        Next i
    End With

    If k Then MsgBox k & " bookmarks was(were) deleted."
End Sub

 
5. Media 1에는 가사가 나오고 사라질 위치에 북마크가 추가되고 슬라이드 하단에 가사 텍스트상자가 추가되고
나타나기, 색칠하기와 사라지기 애니메이션이 추가됩니다.
미디어 책갈피는 최대 512개를 추가할 수 있기 때문에 너무 많은 자막은 안됩니다. 그때는 미디어를 분할해야겠습니다.

자막의 폰트와 글자색상 위치등은 모두 선택해서 수정하면 되겠습니다.
 
6. 슬라이드쇼를 시작해서 자막이 정확한 시간에 뜨고 사라지는지 확인하세요.

 

1슬라이드 실행화면: 


 
추가로 유튜브 영상에도 자막을 보이고 싶을 수 있는데요.
유튜브 영상위에는 자막을 띄울 수 없습니다.
그래서 유튜브 화면을 줄여서 조금 위에 띄워놓고
아래 여백에 자막을 보여줘야 합니다.
 
또한 유튜브 영상에 책갈피를 삽입할 수 없으므로
무음 오디오를 삽입하고 재생시킨 다음
무음 오디오에 오디오 책갈피를 걸어서 자막이 재생되게 해야 합니다.
 
위와 마찬가지로 무음오디오의 이름은 Media 1로 설정하고
매크로를 실행하고 Srt 파일을 선택하면 무음오디오에 책갈피를 걸고 자막을 자동으로 애니메이션으로 추가해줍니다.

유튜브 영상은 최초에 재생되는데 약2초 정도 소요되므로
.srt 자막의 싱크를 2초정도 늦춰주는 것이 필요합니다.


자막 편집은 아래 프로그램을 이용하세요.
http://www.nikse.dk/subtitleedit

syncronization 메뉴에서 2초정도 밀어주고 다른이름으로 저장하세요.
 

2슬라이드 실행화면: (영상앞부분만 녹화했는데도 저작권보호영상으로 짤려서 움짤로 대체합니다.)


첨부파일 참고하세요.


영상은 일부러 낮은 화질로 삽입하였고 특히 1슬라이드 영상은 저작권침해를 피하고자 2배속 재생되고 자막 또한 2배속으로 빠르게 지나갑니다. 2슬라이드 영상은 유튜브재생이라 원본대로 1배속이고 자막도 1배속입니다.
영상이나 가사 등은 모두 원저작자에게 권한이 있습니다.
(저작권은 링크의 설명을 참고하세요.)


이 자료는 순수한 파워포인트 교육용 자료로 제작되었습니다. 

나타날때와 사라질 때 각각 북마크를 추가하는 버전: 최대 256개 북마크(가사) 가능

Srt2Lyric1.pptm
7.41MB

나타날때만 북마크를 추가하는 버전: 최대 512개 가사 북마크 가능

Srt2Lyric2.pptm
1.00MB

큐피드 가사(srt파일 참고용)

Cupid_한글1.SRT
0.00MB

 
관련: 지식인