성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
Digital Stories
방명록
최근 덧글
[정성태] Java - How to use the Foreign Funct...
[정성태] 제가 큰 실수를 했군요. ^^; Delegate를 통한 Bein...
[정성태] Working with Rust Libraries from C#...
[정성태] Detecting blocking calls using asyn...
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
[정성태] "props[i].GetValue(props[i])" 코드에서 ...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
기타
생각의 전환
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 ext='true' style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>Camtasia - "변경된" 볼륨을 일괄 설정하는 방법</h1> <p> Camtasia를 사용해 오디오를 편집하는 경우,<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='camtasia_volume_1.png' src='/SysWebRes/bbs/camtasia_volume_1.png' /><br /> <br /> 위의 그림을 보면 3가지 구역으로 나뉘는데요, <br /> <br /> <ol> <li>가장 좌측 구역: 볼륨 게이지를 변경한 경우,</li> <li>중간 구역: Audio Point를 추가하고 볼륨 게이지를 변경한 경우,</li> <li>우측 구역: 기본 볼륨 상태인 경우,</li> </ol> <br /> 위에서 첫 번째와 두 번째 경우는 "변경"의 값을 보관하기 위해 "volume"이라는 값이 추가됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > "parameters": { <span style='color: blue; font-weight: bold'>"volume"</span>: { "type": "double", "keyframes": [ { "endTime": 0, "time": 0, <span style='color: blue; font-weight: bold'>"value": 0.3,</span> "duration": 0 }, { "endTime": 6232800000, "time": 6232800000, <span style='color: blue; font-weight: bold'>"value": 0.3,</span> "duration": 0 }, ] } }, </pre> <br /> 위에서는 그 값이 "0.3"인데, 따라서 "30%"의 출력으로 바뀐 것으로 그림에서는 "중간 구역"의 설정에 해당합니다.<br /> <br /> 재미있는 건, 3번째 경우입니다. 이런 경우는 명시적인 "volume" 값이 아니라 단순히 "gain"이라는 값이 1.0으로만 설정돼 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > "id": 30, "_type": "AMFile", "src": 1, "trackNumber": 2, "attributes": { "ident": "01", <span style='color: blue; font-weight: bold'>"gain": 1.0,</span> "mixToMono": false, "loudnessNormalization": true, "sourceFileOffset": 0 }, </pre> <br /> 이 값은 오디오의 속성 창에서 변경 가능한 "Gain" 값을 반영합니다. 따라서 만약에 위의 구역을 선택하고 Gain을 다음과 같이 "200%"로 바꾸면,<br /> <br /> <img alt='camtasia_volume_2.png' src='/SysWebRes/bbs/camtasia_volume_2.png' /><br /> <br /> 해당 값은 "gain"이 2.0으로 반영됩니다. 즉 "volume" 값이 생성되지는 않고 "gain"만 변경되는 것입니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> 이로 인해, 오디오를 일괄적으로 변경하려면 2가지 방법으로 나뉩니다.<br /> <br /> <ol> <li>사용자가 단순히 gain 값만을 변경하거나, 기본 값인 경우</li> <li>사용자가 오디오 레벨을 명시적으로 설정한 경우</li> </ol> <br /> 우선, 위의 첫 번째 방식으로 변경했다면 단순히 해당 구역을 다중 선택(구역을 드래그 하거나, Ctrl+Shift 키와 함께 클릭)으로 지정하고 오디오 속성에서 "Gain"을 변경하면 됩니다.<br /> <br /> 재미있는 건, "Gain"으로 변경한 것은 "volume"에는 반영되지 않는다는 점입니다. 즉 위의 두 번째 방식으로 설정된 구역의 "volume"은 "Gain"과는 무관합니다.<br /> <br /> 문제는, "volume"을 일괄 변경하는 방법이 (제가 모를 수도 있지만) Camtasia에 아직 제공되지 않습니다. 어쩔 수 없이 일일이 구역 하나하나를 선택하고 모두 바꿔야 하는데요, 다행히 Camtasia가 유지하는 프로젝트 파일인 tscproj가 json 형식을 따르기 때문에 다음과 같이 간단한 파이썬 코딩으로 일괄 변경할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 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() </pre> <br /> 위의 스크립트는 test.tscproj 파일을 읽어 "new.json" 파일로 저장하는데, 이때 test.tscproj에 포함된 모든 "volume"의 값을 1.0(100%)로 바꾸게 됩니다.<br /> <br /> 간단하죠? ^^<br /> </p><br /> </div>
첨부파일
스팸 방지용 인증 번호
2110
(왼쪽의 숫자를 입력해야 합니다.)