본문 바로가기
기타/다빈치리졸브16자동화(py3)

1. 파이썬으로 DavinciResolve를 제어하기 위해 필요한 준비작업

by 일코 2020. 8. 10.

안녕하세요?

요즘 인기 급상승하는 부업거리, 유튜브 영상자동제작&업로드 시스템을 구축하기 위한 튜토리얼입니다.

유튜버 "이리앨"님의 부업하는 방법 소개영상 시리즈 

1. 파이썬을 어느 정도 다룰 줄 아시고,

https://www.python.org/

2. 다빈치리졸브를 써보신 분이라면

다빈치리졸브16 스튜디오 로딩화면. Lua 및 Python 스크립팅 탑재.

분명히 다빈치리졸브에 파이썬 스크립트 기능이 포함되어 있다는 사실을 알고 환호하셨을텐데요.

프로젝트 시작부터 끝까지, (다소 번거롭기는 하지만) 소스를 조합해서 영상을 만들고

유튜브나 비메오에 업로드 배포하는 단계까지 모두 리졸브 안에서 코딩으로 가능하다는 뜻이거든요.

"유튜브 1일1영상 업로드 자동화" 같은 부업거리에 도전해 볼 만 하겠다고 생각하신 분들이 많을 것 같아요.

무료 비디오클립 수집, 무료e북 다운로드, 스크립트와 성우mp3 제작 등의 작업도 간단히 자동화할 수 있으니까요.

그리고, 파이썬 코딩이나 다빈치리졸브에 익숙하지 않으시더라도, 코딩이 어려운 부분은 어느 정도 수작업으로 대체하셔도 되니까, 난이도 때문에 못하겠다는 생각은 내려놓으셔도 좋습니다.

그런 맥락에서,

이번 포스팅에서는 다빈치리졸브 스크립팅을 위한 준비작업 순서를 알려드리겠습니다.

이 글을 읽는 여러분들은 "어렵겠다"고만 생각하지 마시고, 차근차근 따라해 보시기 바랍니다.

제가 진행하는 방법으로, 이해 안되면 복붙이라도 하실 수 있게 멱살캐리 해드리겠습니다.

대신, 먼저 말씀드리지만, 제 블로그의 모든 포스팅 시리즈는 영구보존하지 않습니다.

연재 완료 후 피드백이나 댓글의 제안, 다소간의 개선 후 유료웹북 및 e북으로 판매 예정(할 각오)입니다.

 

본론입니다.

여러분의 컴퓨터에 설치되어 있는 파이썬 버전이 무엇이든간에, (2020년 8월 현재 시점에서는 3.7이나 3.8 정도?)

 

1. 3.6으로 설치하셔야 합니다. 현재까지는요. (2.7도 가능하긴 합니다.) OS가 x64면 64비트 파이썬을 설치하시고, x32면 32비트로 설치하시면 됩니다. 설치과정 중에 "Add to PATH" 옵션을 체크하셔야 합니다. (혹시 다른 파이썬 버전이 설치되어 있다면, path에서 제거해 주셔야 합니다.) 여러분 컴퓨터 어느 폴더에서든 python.exe를 실행하면 3.6이 열리게 말이죠.

 

2. 다빈치리졸브 스튜디오(유료)를 구매 및 설치합니다. 설치시 제공되는 readme.txt에서는 스튜디오에서 스크립팅 방법을 이야기하고 있는데, 무료버전에서도 당연히 가능하지 않을까 추측해봅니다. 어차피 제공하는 DLL파일이나 프로그램 구조는 동일하니까요. 조만간 무료버전으로도 테스트해볼 예정입니다.

 

3. 환경변수를 추가해 줘야 합니다. 윈도우 기준으로 아래의 세 개를 추가해 주시면 됩니다.

RESOLVE_SCRIPT_API = "%PROGRAMDATA%\Blackmagic Design\DaVinci Resolve\Support\Developer\Scripting\"
RESOLVE_SCRIPT_LIB = "C:\Program Files\Blackmagic Design\DaVinci Resolve\fusionscript.dll"
PYTHONPATH = "%PYTHONPATH%;%RESOLVE_SCRIPT_API%\Modules\"

추가하는 방법을 모르시는 분들을 위해 간략히 설명드리면,

1) 윈도우키 누르고 "환경"을 타이핑해보시면 아래와 같이 "제어판-시스템 환경 변수 편집" 메뉴가 나타납니다.

시스템 환경변수 편집

2) 실행하고, 시스템 속성 창이 뜨면 우측 하단의 "환경 변수(N)..."를 클릭합니다.

우측하단의 "환경 변수(N)..." 클릭

3) 환경변수 창이 뜨면 상단의 사용자변수 항목 중 "새로 만들기(N)..."를 클릭하고 다음과 같은 방식으로 세 개 다 입력합니다.

이런 방법으로 세 개 다 추가하면 끝.

4) 확인을 눌러 저장하고 마칩니다. 끝.

 

4. 파이썬과 다빈치리졸브 설치 및 환경변수까지 추가하셨으면 파이참(혹은 여러분이 사용하시는 에디터나 IDE)을 열어서 새 프로젝트를 생성한 후에 DaVinci Resolve(설치된 폴더)\Support\Developer\Scripting\Modules\DaVinciResolveScript.py 파일을 복사해서 프로젝트 최상단 폴더에 복사해놓습니다. (임포트할 예정)

DaVinciResolveScript.py다빈치리졸브에서 기본으로 제공하는 파일로, 내용은 아래와 같습니다.

import sys
import imp
import os

script_module = None
try:
    import fusionscript as script_module
except ImportError:
    # Look for installer based environment variables:
    import os

    lib_path = os.getenv("RESOLVE_SCRIPT_LIB")
    if lib_path:
        try:
            script_module = imp.load_dynamic("fusionscript", lib_path)
        except ImportError:
            pass
    if not script_module:
        # Look for default install locations:
        ext = ".so"
        if sys.platform.startswith("darwin"):
            path = "/Applications/DaVinci Resolve/DaVinci Resolve.app/Contents/Libraries/Fusion/"
        elif sys.platform.startswith("win") or sys.platform.startswith("cygwin"):
            ext = ".dll"
            path = "C:\\Program Files\\Blackmagic Design\\DaVinci Resolve\\"
        elif sys.platform.startswith("linux"):
            path = "/opt/resolve/libs/Fusion/"

        try:
            script_module = imp.load_dynamic("fusionscript", path + "fusionscript" + ext)
        except ImportError:
            pass

if script_module:
    sys.modules[__name__] = script_module
else:
    raise ImportError("Could not locate module dependencies")

 

5. 이제 모든 준비를 마쳤습니다. 예제 스크립트를 하나 작성해보겠습니다. "Hello World"라는 이름의 프로젝트를 생성하고 편집화면을 여는 과정까지의 코드입니다.

import DaVinciResolveScript as dvr_script

resolve = dvr_script.scriptapp("Resolve")
fusion = resolve.Fusion()
projectManager = resolve.GetProjectManager()
projectManager.CreateProject("Hello World")

 이 코드를 실행하기 위해서는 다빈치리졸브 프로그램이 열린 상태여야 합니다. 아쉽게도 다빈치리졸브 공식매뉴얼을 보면 리졸브를 코드로 열고 닫는 인터페이스까지는 만들어 놓지 않았습니다. 대신 커맨드라인에서 리졸브를 실행할 때 resolve.exe --nogui 라는 인자를 붙여서 실행하시면 headless 모드로 백그라운드에서 열립니다. 최종적으로는 파이썬 스크립트 최상단에 subprocess.call 등의 메서드로 리졸브를 실행하는 코드도 추가할 예정입니다.

하여튼! 위 코드를 실행해보겠습니다.

우선 리졸브를 실행합니다.

또 로딩화면..
프로젝트 선택화면이 나타났습니다.

이 상태에서 파이참으로 파이썬 스크립트를 실행해보겠습니다.

위 코드를 실행해보니까
짜잔! 화면이 바뀌면서 "Hello World"라는 이름의 새 프로젝트가 실행되었습니다.

사실 리졸브에서 모든 커맨드의 API를 제공하고 있지는 않기 때문에, 부분적으로는 수작업이나 pyautogui 등의 메서드를 활용해야 하는데 이 부분은 해외 유튜버나 공식매뉴얼, 리졸브 업데이트 등을 모니터링하면서 틈틈이 메꿔가고 있습니다.

이번 포스팅은 여기서 마치겠습니다.

다음 포스팅에서는 미디어풀을 조작하고 타임라인을 생성한 후에 비디오클립을 삽입하는 과정까지 자동화해보겠습니다.

긴 글 읽어주셔서 감사합니다. 행복한 하루 되세요!

 

댓글