Microsoft MVP성태의 닷넷 이야기
Camtasia - "변경된" 볼륨을 일괄 설정하는 방법 [링크 복사], [링크+제목 복사],
조회: 3951
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

Camtasia - "변경된" 볼륨을 일괄 설정하는 방법

Camtasia를 사용해 오디오를 편집하는 경우,

camtasia_volume_1.png

위의 그림을 보면 3가지 구역으로 나뉘는데요,

  1. 가장 좌측 구역: 볼륨 게이지를 변경한 경우,
  2. 중간 구역: Audio Point를 추가하고 볼륨 게이지를 변경한 경우,
  3. 우측 구역: 기본 볼륨 상태인 경우,

위에서 첫 번째와 두 번째 경우는 "변경"의 값을 보관하기 위해 "volume"이라는 값이 추가됩니다.

"parameters": {
    "volume": {
        "type": "double",
        "keyframes": [
            {
                "endTime": 0,
                "time": 0,
                "value": 0.3,
                "duration": 0
            },
            {
                "endTime": 6232800000,
                "time": 6232800000,
                "value": 0.3,
                "duration": 0
            },
        ]
    }
},

위에서는 그 값이 "0.3"인데, 따라서 "30%"의 출력으로 바뀐 것으로 그림에서는 "중간 구역"의 설정에 해당합니다.

재미있는 건, 3번째 경우입니다. 이런 경우는 명시적인 "volume" 값이 아니라 단순히 "gain"이라는 값이 1.0으로만 설정돼 있습니다.

"id": 30,
"_type": "AMFile",
"src": 1,
"trackNumber": 2,
"attributes": {
    "ident": "01",
    "gain": 1.0,
    "mixToMono": false,
    "loudnessNormalization": true,
    "sourceFileOffset": 0
},

이 값은 오디오의 속성 창에서 변경 가능한 "Gain" 값을 반영합니다. 따라서 만약에 위의 구역을 선택하고 Gain을 다음과 같이 "200%"로 바꾸면,

camtasia_volume_2.png

해당 값은 "gain"이 2.0으로 반영됩니다. 즉 "volume" 값이 생성되지는 않고 "gain"만 변경되는 것입니다.




이로 인해, 오디오를 일괄적으로 변경하려면 2가지 방법으로 나뉩니다.

  1. 사용자가 단순히 gain 값만을 변경하거나, 기본 값인 경우
  2. 사용자가 오디오 레벨을 명시적으로 설정한 경우

우선, 위의 첫 번째 방식으로 변경했다면 단순히 해당 구역을 다중 선택(구역을 드래그 하거나, Ctrl+Shift 키와 함께 클릭)으로 지정하고 오디오 속성에서 "Gain"을 변경하면 됩니다.

재미있는 건, "Gain"으로 변경한 것은 "volume"에는 반영되지 않는다는 점입니다. 즉 위의 두 번째 방식으로 설정된 구역의 "volume"은 "Gain"과는 무관합니다.

문제는, "volume"을 일괄 변경하는 방법이 (제가 모를 수도 있지만) Camtasia에 아직 제공되지 않습니다. 어쩔 수 없이 일일이 구역 하나하나를 선택하고 모두 바꿔야 하는데요, 다행히 Camtasia가 유지하는 프로젝트 파일인 tscproj가 json 형식을 따르기 때문에 다음과 같이 간단한 파이썬 코딩으로 일괄 변경할 수 있습니다.

import json
f = open("test.tscproj")
new_file = open("new.json", "w")

data = json.load(f)

timeline = data['timeline']
sceneTrack = timeline['sceneTrack']

new_volume = 1.0

for scene in sceneTrack['scenes']:
    csml = scene['csml']
    for track in csml['tracks']:
        trackIndex = track['trackIndex']
        for media in track['medias']:
            if 'parameters' in media:
                parameters = media['parameters']
                if 'volume' in parameters:
                    volume = parameters['volume']
                    if isinstance(volume, float):
                        parameters['volume'] = new_volume
                    else:
                        volume_type = volume['type']
                        if volume_type == 'double':
                            for key_frame in volume['keyframes']:
                                keyframe_value = key_frame['value']
                                if isinstance(keyframe_value, float):
                                    key_frame['value'] = new_volume

json.dump(data, new_file, indent=4)

f.close()
new_file.close()

위의 스크립트는 test.tscproj 파일을 읽어 "new.json" 파일로 저장하는데, 이때 test.tscproj에 포함된 모든 "volume"의 값을 1.0(100%)로 바꾸게 됩니다.

간단하죠? ^^









[최초 등록일: ]
[최종 수정일: 11/6/2022]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




1  [2]  3  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
527정성태7/13/20215665Microsoft Edge의 뉴스 알림 창 끄는 방법
526정성태7/11/202111372AMD CPU를 장착한 컴퓨터에서 Windows 11을 위한 fTPM 활성화 방법
525정성태6/30/20219559저작권 표시 없는 상업적 사용 가능한 무료 아이콘 구하기 [3]
524정성태6/25/20218551Windows 11 설치를 가로막는 TPM 칩, 운이 좋다면 구매할 수 있습니다. [3]
523정성태5/3/202110051절전 모드로 내려가는 우분투 머신 [7]
522정성태9/16/2020108532020년 작업 PC ^^ [7]
521정성태11/25/201910961[종료] "시작하세요. C# 8.0 프로그래밍" 책을 1만원에 판매합니다. (4권 한정) [2]
520정성태8/26/20197548Snagit 2019(Build 3847) 사용 시 Effect 변경 후 창을 닫는 시점에 응용 프로그램이 종료하는 현상
519정성태7/15/20199707youtube-dl.exe를 윈도우 샌드 박스에서 실행
518정성태7/1/201910448크로미움 기반의 Microsoft Edge 웹 브라우저... 쓸만하네요. ^^ [4]
517정성태5/16/20199561윈도 운영체제는 태생적으로 갖고 있는 문제들로 인해 아직도 매우 취약한 운영체제로 분류됩니다?!! [2]
516정성태5/16/20198546배터리 사용 중인 태블릿에는 크롬보다는 Edge 브라우저가 더 낫습니다.
515정성태11/19/201812903LED 전등 교체와 잔광 현상 제거 콘덴서 - 두 번째 이야기
514정성태10/30/201814535LED 매입등 교체와 잔광 현상 제거 콘덴서
513정성태9/13/20189888블로거 분들 랜섬웨어 메일 "저작권관련 이미지 무단사용 안내메일(장명옥 본인제작)" 조심하세요. [2]
512정성태8/10/20189654번개는 땅에서부터 하늘로 올라가는 현상? [1]
511정성태7/21/201810018[종료] DDR 3 4GB * 4EA, AMD 페넘II-X4 905e, 메인 보드 GA-770TA-UD3를 드립니다. [3]
509정성태6/12/201811451목/허리가 아픈 개발자들을 위한 근육 마사지 치료법 - KSNS [1]
508정성태5/22/201814897로이 베나비데스
507정성태4/13/201810927sysnet 블로그 관련 수치 [1]
506정성태1/20/201817004삼성 A/S 경험 - 오디세이(Odyssey) 노트북이 게임 도중 갑자기 전원이 나가는 경우 [2]
505정성태1/9/201716127모니터 간단 소개 - LG IPS LED 24MA53, 델 UltraSharp 24 - U2414H, 알파스캔 AOC 2477 IPS
504정성태9/25/201621399모니터 3대를 NVidia Surround로 연결하기 - 두 번째 [3]
503정성태9/22/201615679Wacom BAMBOO 태블릿 - Tablet PC Defined 메뉴가 없는 경우 [1]
501정성태5/31/201615690twoomail.com으로부터 온 "'...'님이 쪽지를 보냈습니다."는 twoo.com의 스팸 메일입니다.
499정성태2/16/2016177462016년 작업 PC ^^ [2]
1  [2]  3  4  5  6  7  8  9  10  11  12  13  14  15  ...