Microsoft MVP성태의 닷넷 이야기
Camtasia - "변경된" 볼륨을 일괄 설정하는 방법 [링크 복사], [링크+제목 복사],
조회: 3975
글쓴 사람
정성태 (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)
473정성태1/14/201415311Google+ Hangouts 대신 예전의 구글톡(Google Talk)을 사용하고 싶다면? [1]
472정성태1/11/201424661Wacom BAMBOO 태블릿 - 우 클릭이 안되거나 좌표가 어긋나는 문제 [5]
471정성태1/9/201418661우와~~~ 2014년 새로운 PC를 장만했습니다. ^^ [2]
470정성태1/9/201419589Wacom BAMBOO 태블릿 - 클릭이 더블 클릭으로 처리되는 문제
469정성태1/2/201418072ATI - DVI에서 HDMI 케이블로 바꿨는데 화면 축소 현상
467정성태1/1/201418824개발자 여러분들에게 추천하는 상품 - 책상용 팔걸이 레스트보드(RESTBOARD) [4]
466정성태11/27/201320412제니퍼소프트는... [3]
464정성태11/5/201315284사파리 웹 브라우저의 메모리 leak 현상 [4]
463정성태10/31/201314834Adobe Reader로 PDF 파일 저장할 때 CPU 100%치는 현상
462정성태10/30/201318335우와~~~ 성태가 책을 썼습니다. ^^ [9]
461정성태9/19/201313819TED 강연 - Marla Spivak: Why bees are disappearing
460정성태8/14/201320089PC의 시간이 맞지 않는 경우, CMOS 배터리 교체 [2]
459정성태8/11/201315253TED 강연 - 에이미 커디(Amy Cuddy): 당신의 신체 언어가 자신의 모습을 결정한다.
458정성태5/11/201315376생각의 전환: 1. 개인 인공위성을 만든 미디어 아티스트 송호준 [3]
457정성태4/1/201317902삼성 노트북 - 고성능 전원 옵션에서 액정 화면이 어두운 경우
456정성태3/11/201317086재미있는 수학 문제 하나: x = y 일때 2 = 1 ? [3]파일 다운로드1
455정성태3/7/201318691윈도우 서버 2012에서 플래시가 동작하지 않는 경우
454정성태1/23/201314949네이버의 애드포스트 수익이 해피빈으로도 전환된다는 사실! 아시나요? [2]
453정성태1/23/201325518윈도우 8/2012 업데이트 후 Windows.old 폴더 삭제하는 배치 명령어 [6]
452정성태1/21/201325795시스템 트레이에 블루투스 아이콘 나오게 하는 방법 [1]
451정성태1/16/201314819세상을 바꾸는 노력 - 정치후원금
450정성태12/31/201215505유연한 개발자의 2013년 새해 인사 [7]
449정성태12/21/201222394새로운 노트북 - 삼성 센스 NT700Z5C-S88 크로노스 [2]
448정성태12/14/201218745유튜브(Youtube) 비디오 파일을 안전하게 다운로드 받는 방법 [1]
447정성태12/14/2012141494분짜리 Ad-Movie 입니다.
446정성태10/28/201233239오피스 2013 한글 버전 설치
1  2  3  [4]  5  6  7  8  9  10  11  12  13  14  15  ...