관련 : 지식인
오디오가 재생될 때 자막이 일정한 속도로 올라오게 하고 싶은 경우
간단히 생각하면,
자막 애니메이션이 위로 올라갈 때 그 재생시간을 오디오의 총 재생시간과 일치하게 하면
일정한 속도로 자막이 올라갈 것입니다. 물론 효과옵션에서 부드럽게시작과 부드럽게 종료를 0초으로 수정해야겠습니다.
어쨋든 이렇게 하면 애니메이션과 오디오 재생을 마치는 시간도 같을 것입니다.
그런데 파워포인트에서는 애니메이션의 최대 재생시간이 59초로 제한이 되어 있습니다.
오디오가 긴 경우 오디오를 1분씩 나누고 텍스트상자도 여러개로 나눠서 만들어야 합니다.
이러면 문제가 복잡해지기 시작합니다.
1. 오디오의 길이에 상관없이 사용할 수 있는 또다른 방법은 오디오 책갈피를 이용하는 방법이 있습니다.
오디오의 특정위치(책갈피)에서 원하는 시간에 맞춰 자막애니메이션이 나타나거나 움직이게 할 수 있습니다.
아래 예시와 사용방법을 참고하세요.
실제 작품 사례:
https://cafe.naver.com/gameppt/153218
2. 오디오 책갈피를 넣고 애니메이션을 추가하는 것이 마우스로 하기에는 정교하지 못하고 계속 반복해야하는 번거로운 작업이기 때문에 VBA를 활용하는 방법을 여기에 한 번 차근차근 소개합니다.
2-1. 슬라이드에 오디오를 삽입하고 자동 재생되게 합니다.
도형 이름은 Audio 1 입니다.
2-2. 텍스트 상자를 삽입하고 화면의 아래쪽에 위치하게 합니다.
도형이름은 TextBox 1 입니다.
2-3. 오디오에 오디오 책갈피를 추가합니다.
텍스트 상자의 텍스트가 총 20행이면 20개를 추가합니다.
오디오 길이를 정확히 20등분으로 나누기 힘드므로 아래와 같은 VBA 코드를 이용합니다.
코드: (Alt-F11 창에서 삽입 > 모듈을 추가한 후에 아래 코드를 붙여넣고 F5키나 녹색 재생 버튼으로 실행)
Sub AddBookmark()
Dim sld As Slide
Dim shp As Shape
Dim bmark As MediaBookmark
Dim cnt As Integer
Dim aLen As Long
Set sld = ActiveWindow.View.Slide
'오디오
Set shp = sld.Shapes("Audio 1")
aLen = shp.MediaFormat.Length
'텍스트상자의 행수
'cnt = 20
cnt = sld.Shapes("TextBox 1").TextFrame.TextRange.Lines.Count
'북마크 일괄 추가
For i = 1 To cnt
Set bmark = shp.MediaFormat.MediaBookmarks.Add(aLen / cnt * (i - 1), "Bookmark" & i)
Next i
End Sub
2-4. 텍스트 상자에 위로 이동하는 효과를 추가합니다.
20번 일정한 크기로 위로 이동하는 효과를 마우스로 넣기가 어려우므로 아래와 같이 VBA를 이용합니다.
(VML을 이용한 애니메이션 추가에 대한 것은 링크 1, 2를 참고하세요.)
'위로 스크롤 효과를 VML Path형식으로 자동으로 추가하고 오디오북마크 트리거에 의해 효과 시작
Sub addPathAnimationToEachBookmarks()
Dim pres As Presentation
Dim sld As Slide
Dim shp As Shape, shpM As Shape
Dim eft As Effect
Dim bhvr As AnimationBehavior
Dim i As Long, j As Long
Dim cnt As Integer
Dim stp As Single
Set sld = ActiveWindow.View.Slide
Set pres = sld.Parent
Set shp = sld.Shapes("TextBox 1")
Set shpM = sld.Shapes("Audio 1")
'기존효과 모두 삭제 - 일반 애니메이션 중 오디오 재생효과는 제외
For i = sld.TimeLine.MainSequence.Count To 1 Step -1
If Not sld.TimeLine.MainSequence.Item(i).Shape Is shpM Then _
sld.TimeLine.MainSequence.Item(i).Delete
Next i
For i = sld.TimeLine.InteractiveSequences.Count To 1 Step -1
For j = sld.TimeLine.InteractiveSequences(i).Count To 1 Step -1
'If Not sld.TimeLine.InteractiveSequences(i).Item(j).Shape Is shpM Then
sld.TimeLine.InteractiveSequences(i).Item(j).Delete
Next j
Next i
cnt = shp.TextFrame.TextRange.Lines.Count
'단계적으로 텍스트가 올라갈 비율(슬라이드 크기와 1:1 비율)
stp = 1 / cnt
stp = stp * (shp.Height / pres.PageSetup.SlideHeight) '슬라이드 높이 대비 텍스트 상자의 높이
'새로 추가
For i = 1 To cnt
Set eft = sld.TimeLine.InteractiveSequences.Add.AddTriggerEffect(pShape:=shp, effectId:=msoAnimEffectPathUp, _
Trigger:=msoAnimTriggerOnMediaBookmark, pTriggerShape:=shpM, bookmark:="Bookmark" & i)
'Set eft = sld.TimeLine.MainSequence.AddEffect(Shape:=shp, effectId:=msoAnimEffectPathUp, _
' Trigger:=msoAnimTriggerOnMediaBookmark)
'Trigger:=msoAnimTriggerOnPageClick)
Set bhvr = eft.Behaviors.Add(msoAnimTypeMotion)
With bhvr.MotionEffect
'현재 단계만큼 위로 이동한 지점에서 상대적으로 위로 stp(0.05등) 만큼 이동(직선)
.Path = "M 0 -" & stp * (i - 1) & " l -0 -" & stp
End With
Next i
End Sub
위 코드 실행 결과 텍스트상자에 위로 이동 애니메이션 20개가 추가되고 각각의 애니메이션에 오디오 북마크로 트리거가 설정됩니다.
2-5. 캡쳐 영상을 확인하세요.
3. 참고로, 파워포인트외에 자막을 삽입하는 가장 확실한 방법은
동영상 편집프로그램으로 자막 작업하시고 동영상으로 저장해서 삽입하는 것일 겁니다.
무료로는 shotcut 같은 프로그램이 있습니다.
유투브 검색해보시면 방법들이 안내되어 있습니다.
예) https://www.youtube.com/watch?v=uQFWHFb3U30
프리미어 프로에서 효율적인 자막 입력 방법은 영상을 재생하면서 적절한 시간대에 멈추고 텍스트 편집 아이콘인 'T' 모양 아이콘을 누르고 영상에 자막위치를 클릭하고 자막텍스트를 입력하고 오른쪽 텍스트 서식창에서 정렬이나 폰트, 색상 등을 설정한 다음 타임라인에서 길이를 수정합니다. 다음 자막부터는 이 자막을 Alt+클릭&드래그해서 복사해서 계속 추가하면 자막 작업을 효율적으로 할 수 있습니다.
실행 전:
실행 후:
'PPT+VBA' 카테고리의 다른 글
파워포인트 표안의 셀 병합여부, 첫번째 셀인지, 병합된 순서, 범위 등 알아내기 (0) | 2023.07.29 |
---|---|
엑셀 데이터로 파워포인트 차트 일괄 생성 (0) | 2023.06.28 |
스핀버튼을 눌러 총금액계산 (1) | 2023.05.21 |
SRT 자막을 책갈피 애니메이션효과로 자동 변환 (0) | 2023.05.16 |
슬라이드 영역을 벗어난 부분 자동으로 잘라내기 (0) | 2023.04.28 |
글자 밑에 밑줄 긋기 (1) | 2023.04.25 |
세로로 긴 표(Table) 자동으로 자르기 (0) | 2023.02.25 |
구역내 슬라이드 랜덤 순서로 이동하기 (0) | 2023.02.17 |
최근댓글