appwiki:resolve

Resolve 17 and new feature

Key new feature of 17:

  • free version now support multiple user collaboration, which means multiple people can work on the same project, and sync changes in realtime
  • audio track editing improvement
  • fusion composition can be compiled into effect node in edit mode, which like AE mograph for PR.
  • live preview of font and fx change
  • retime in property panel now
  • custom location path for LUT files
  • more youtube like title built-in

Resolve 15 and Disk Database file

  • If you open project manager, and click on the top left icon to expand the database disk view
    • you can see the list of “Resolve Database Files with DB Name” (actually the Location Path)
  • Add database file to Project Manager
    • “New Database” button, choose “connect”, give the database name, and the root location, which named “Resolve Projects”
    • or choose “Create”, to create the database folder structure
    • you can use this method on Shared Network drive to share project between different computers, (even works for the free version, if not working, try move original one, and create same database, then swap back to the original database folder)
      • note: resolve save different “Project” in different disk folder with different “.db” file, saving project of same project on different computer seems not update other computer in real time, other computer need to re-open the project to see the reflect changes
  • “Resolve Projects” disk database structure
    1. Users
      1. admin
        1. Configs/User Default Config.xml
        2. User.db
      2. guest
        1. User.db
        2. Projects
          1. EachProjName/Project.db (sqlite 3 format)
        3. Configs/User Default Config.xml
    2. Settings
      1. list of config xmls
  • code to list project
    import os
    db_file = 'Project.db'
    db_disk_path = r'd:\yourPathTo\Resolve_Projects_parentFolder'
    proj_dir = os.path.join(db_disk_path,'Resolve Projects','Users','guest','Projects')
    proj_list = []
    if os.path.isdir(proj_dir):
        proj_list= os.listdir(proj_dir)
     
    # access first project
    cur_proj = proj_list[0]
    cur_db_file = os.path.join(proj_dir,cur_proj,db_file)
    if not os.path.isfile(cur_db_file):
        print('DB file not exists: {0}'.format(cur_db_file))
  • Access DB using python sqlite module
    import sqlite3 as sql
    print(sql.sqlite_version) # make sure your sqlite is newer than resolve sql database
     
    con = sql.connect(cur_db_file)
    sql_cmd = 'SELECT Name FROM Sm2MpMedia' # list media pool item
    cur = con.cursor()
    cur.execute(sql_cmd)
    all_rows = cur.fetchall()
    print(all_rows)
    # [(u'20190410_xslate_1.mp4',), (u'Timeline 1',), (u'Timeline 2',)]
  • Access DB use Python+Qt
    # ---- qtMode ----
    qtMode = 0 # 0: PySide; 1 : PyQt, 2: PySide2, 3: PyQt5
    qtModeList = ('PySide', 'PyQt4', 'PySide2', 'PyQt5')
    try:
        from PySide import QtGui, QtCore, QtSql
        import PySide.QtGui as QtWidgets
        qtMode = 0
    except ImportError:
        try:
            from PySide2 import QtCore, QtGui, QtWidgets, QtSql
            qtMode = 2
        except ImportError:
            try:
                from PyQt4 import QtGui,QtCore, QtSql
                import PyQt4.QtGui as QtWidgets
                import sip
                qtMode = 1
            except ImportError:
                from PyQt5 import QtGui,QtCore,QtWidgets, QtSql
                import sip
                qtMode = 3
    print('Qt: {0}'.format(qtModeList[qtMode]))
     
    db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
    db.setDatabaseName(cur_db_file)
    if db.open():
        print('DB is open.')
     
    sql_query = QtSql.QSqlQuery()
    sql_cmd = 'SELECT * FROM Sm2MpMedia'
    sql_query.exec_(sql_cmd)
    print(sql_query.record())
    title_list = [x.strip() for x in 'Name, MpFolder, FrameRate, Sm2MpFolder_id, Video, VideoType, Sm2MpMedia_id'.split(',')]
    title_ids = [sql_query.record().indexOf(x) for x in title_list]
    print(sql_query.record().indexOf("Name"))
     
    # data
    media_data=[]
    while sql_query.next():
        media_data.append([sql_query.value(x) for x in title_ids])
    print(media_data)
Table Name Information Fields
Sm2MpMedia the Media Pool Items Name, MpFolder, FrameRate, Sm2MpFolder_id, Video, VideoType, Sm2MpMedia_id
Sm2MpFolder Media Pool bins Sm2MpFolder_id, Name
Sm2MpFolder_Sm2MpMedia Media Pool bin to Media relationship DBOwner (folder_id), DbAssociate (media_id)
Sm2Timline timeline items Sm2Timline_id, Name, PTZRPreset
SM_Setup Project setup SM_Setup_id, ResTemplate, Width, Height, BitDepth,
FrameTransmitRate, PixelAspectRatio, FPS, FormatWidth, FormatHeight
Sm2TiItem Media item involved with timeline Sm2TiItem_id, Name, Start, Duration, In, MediaRef (media id), MediaStartTime, MediaFilePath
SmPreset, Sm2TiAudioClip, Sm2Sequence
  • note:
    • seems if the media in media pool not used in timeline, then the MediaFilePath info is not available
  • Digging most useful information (Python + Qt method)
    db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
    db.setDatabaseName(cur_db_file)
    if db.open():
        print('DB is open.')
     
    sql_query = QtSql.QSqlQuery()
     
    # ~ update media folder
    sql_cmd = 'SELECT * FROM Sm2MpFolder'
    sql_query.exec_(sql_cmd)
    title_list = [x.strip() for x in 'Sm2MpFolder_id, Name'.split(',')]
    title_ids = [sql_query.record().indexOf(x) for x in title_list]
    folder_data={}
    while sql_query.next():
        t_row = [sql_query.value(x) for x in title_ids]
        folder_data[t_row[0]]=t_row[1]
    print(folder_data)
     
     
    # ---------- main media infos --------------
    sql_cmd = 'SELECT * FROM Sm2MpMedia where DbType = "Sm2MpVideoClip"'
    sql_query.exec_(sql_cmd)
     
    title_list = [x.strip() for x in 'Name, Sm2MpMedia_id, Sm2MpFolder_id, Video'.split(',')]
    title_ids = [sql_query.record().indexOf(x) for x in title_list]
     
    main_media_data=[]
    main_media_dict ={}
    while sql_query.next():
        t_row= [sql_query.value(x) for x in title_ids]
        main_media_data.append(t_row)
        main_media_dict[t_row[1]] = {'n':t_row[0], 'bin':folder_data[t_row[2]]}
     
    print(main_media_data)
     
     
    # ~ get timeline item data
    sql_cmd = 'SELECT * FROM Sm2TiItem'
    sql_query.exec_(sql_cmd)
    title_list = [x.strip() for x in 'Sm2TiItem_id, Name, Start, Duration, MediaRef, MediaFilePath'.split(',')]
    title_ids = [sql_query.record().indexOf(x) for x in title_list]
     
    ti_item_data = []
    while sql_query.next():
        t_row = [sql_query.value(x) for x in title_ids]
        ti_item_data.append(t_row)
        if t_row[4] in main_media_dict.keys():
                if 'path' not in main_media_dict[t_row[4]].keys():
                    main_media_dict[t_row[4]]['path'] = t_row[5]
                if 'start' not in main_media_dict[t_row[4]].keys():
                    main_media_dict[t_row[4]]['start'] = t_row[2]
                if 'duration' not in main_media_dict[t_row[4]].keys():
                    main_media_dict[t_row[4]]['duration'] = t_row[3]
     
     
    import pprint
    pprint.pprint(main_media_dict)
     
    # ~ get timeline list
    sql_cmd = 'SELECT * FROM Sm2Timeline'
    sql_query.exec_(sql_cmd)
    title_list = [x.strip() for x in 'Name, Sm2Timeline_id, Sm2MpMedia_id'.split(',')]
    title_ids = [sql_query.record().indexOf(x) for x in title_list]
     
    timeline_data = []
    while sql_query.next():
        t_row = [sql_query.value(x) for x in title_ids]
        timeline_data.append(t_row)
     
    print(timeline_data)
     
    # ~ get project setup
    sql_cmd = 'SELECT * FROM SM_Setup'
    sql_query.exec_(sql_cmd)
    title_list = [x.strip() for x in 'ResTemplate, Width, Height, BitDepth,FPS,PixelAspectRatio,ModDateTime,CreateDateTime,StillDurationSecs'.split(',')]
    title_ids = [sql_query.record().indexOf(x) for x in title_list]
     
    proj_data = []
    while sql_query.next():
        t_row = [sql_query.value(x) for x in title_ids]
        proj_data.append(t_row)
     
    print(proj_data)
     
    # ~ get Project Name
    print(cur_proj)
     
    # ~ other table
    # BtVideoInfo

Resolve Version Control Workflow

Free vs Paid version of Resolve 12

  • Paid advantage are mainly useful for big studios with big scale management of hardware and manpower
    • Noise reduction and Motion Blur effect
    • Stereoscopic 3D video production
    • Remote management system
    • Video control surface hardware support
    • 5k, 6k, 8k video production
    • Multi-GPU acceleration support (resolve 12 only can use 1 GPU, and 2 on MacPro)
  • In Resolve 15, scripting is only available in paid version

DaVinci Resolve 12 Media Note

input File Format resolution
video format .mov, .mts (AVCHD), mp4 4k, FHD, HD, SD
image format .DPX, Cineon, tif, OpenEXR (layers), png, psd, jpg
audio file .wav, .aiff
Output File Format resolution
video format .mov
image format .tif, .exr
audio file .wav, .aiff

DaVinci Resolve 12 Edit Note

track normal trim edit A
track ripple trim edit T
track razor cut edit B
track slip edit (slide in-out point in source) T
insert clip from source In-Out F9
delete clip from track backspace
ripple delete from track shift + backspace
Snapping option switch N
add a mark M

Intro to Interface

  • Most Important Edit Tool icon
    • cursor: selection and basic editing tool
    • filmstrip with slider: ripple editing tool
    • razor: split video block
  • Footage insert tool (after you set the In and Out point in Source Video Panel)
    • Insert: it will insert the footage at the Timeline playback header position, and push the rest of video forward
    • Override: it will insert the footage at the Timeline playback header position, and cover up rest of video up to the in-out length of source video
    • Replace: it will replace the selected video block with the source, if the length of source video is not long enough, original selected video block will fill the empty portion
  • Snap and link
    • Snap option: it will help move each video block to the end or header tip of other video blocks, like a magnet sticks
    • link option: it will keep video track and audio track together when moving them as a whole block
  • show Audio track waveforms - steps:
    1. click on the icon on the very right of Timeline panel next to “timeline zoom slider”
    2. then, it shows “Timeline view option” pop-up panel,
    3. check the option “Show Audio Waveforms” and drag to max the “Track Height Audio”
  • solution 0: manually create text blocks along timeline and fit for video
  • solution 1: subtitle text software > subtitle text to video conversion > import subtitle video into resolve
  • solution 2: data burn-in tab in resolve color page > load certain format file
  • solution 3: use other video editor has better support with subtitle, then use other video editor to create subtitle, and then export EDL common non-linear editor exchange file format, import into resolve to create subtitle text timeline
  • solution 4 (srt subtitle import workflow):
    1. upload video to youtube and let youtube generate the subtitle, download youtube subtitle with this online app: http://www.lilsubs.com/
    2. once you get the srt file, convert it from srt to finalcut xml file
      1. convert method 1: use online app to convert: https://resolver.tools/subsimple/
      2. convert method 2: use subtitle edit free tool: https://github.com/SubtitleEdit/subtitleedit/releases, download the zip file and extract to a folder that you keep the software, launch subtitleedit.exe, and open the srt with it and File menu > Export as FinalCut XML Advanced, make sure frame rate same as your video setting
    3. (make sure your resolve project setting is correct with its frame rate as well)
    4. import the fcpxml file into resolve by File > Import Timeline > Import XML, then it create a new timeline with subtitle in the center, select all text clip inside, and use inspector to change Y position down a bit and format with text option there.
    5. Note: the new timeline will start with timecode of first subtitle clip, so maybe not frame 0 at default
      1. the solution 1: you manual copy all the text clips to your video timeline with playhead at that timecode
      2. the solution 2: create a dummy subtitle line at frame 0 in subtitle edit app, so it always fit right there
  • Save Text Preset into Power Bin by drag into Power Bin from timeline (feature since version 12.5)
    • View menu > Show Power Bin (a common preset bin)
https://forum.blackmagicdesign.com/viewtopic.php?f=21&t=32367
https://mixinglight.com/portfolio/using-data-burn-text-layers-legible-client-notes/
https://forum.blackmagicdesign.com/viewtopic.php?f=21&t=38813

ref: https://www.youtube.com/watch?v=1fkXde6bUOw

  1. masking in each node is only for each node's Grading
  2. to output the alpha to overall clip, you need add Right-Click menu > Add Alpha Output, then it will use masking information from Power Curve or Key to create alpha channel,
  3. then in timeline, this clip will behave like Photoshop layer with alpha channel.

Move Projects into Resolve from Other Non-linear editors like Premiere and FCP

Publish Format and Bitrate

Complete Training Tutorials

Problem and Bottle Neck

Optimized Media and Proxy

  • reference and explain: https://youtu.be/RukXAj8FEwU
  • Project setting: “General Options” : “Optimized Media” : choose a playback size and a codec with proxy option
  • check “use optimized media when available” in playback menu, and proxy mode to set the proxy resolution
  • when rendering, just make sure un-check “use optimized media when available”

Render Cache and Playback

    • resolve Caching flow:
      1. Source cache: cache before any color panel operation, good for dealing large RAW sequence footage, it can be used as on-the-fly proxy generation, and source cache is using timeline resolution, so 4k footage output 1080p only cache at 1080p; source cache is auto by-default
      2. Node cache: cache on per node level in color panel operation, good for speed up after a heavy effect on a node, auto by-default
      3. clip cache: last caching point, need manually check “Render cache clip output” in color panel view, since any pre change will break the cache result; Normally indicate Cache outdated in “Red text”.
      4. sequence cache: only with in Smart Mode of cache, it will cache any composite clip and clip with speed or opacity setting.
    • cache can be outdated if source is changed in each stage
    • cache can be re-render when there is 5 sec of inactivity
    • if cache take too much space, then Playback menu > Delete Render Cache > unused
  • Any i5 CPU with integrated graphic card and above can do 1 hour 1080p edit no problem, with SSD 250GB for footage, and 128GB extra SSD for cache file
  • while anything like 4k or longer hour video will require more disk space for cache file, so be prepared for 512GB SSD for cache file.
  • Temporary solution:
    • if run out disk, delete render cache > unused render cache; if still not enough, delete all render cache work with small area of timeline one at each time, or better to add a big SSD for cache file
    • if with cache file, you should be able to play back smoothly
    • also, a dedicated graphic card will render and playback faster, or get faster CPU

Resolve 12.5.1 onwards MOV file crash issue

  • because since 12.5.1 version, resolve remove the requirement for Apple quicktime player, and it starts using its own decode, which making it sometimes it crash when dealing with MOV file
  • luckily, the original 12.5.0 version still uses the old Apple quicktime to display MOV file, which has no issue.
  • you can get the resolve 12.5 version first until they fix the MOV issue in later version. (12.5.3 tested with same issue)
  • old version download can be found the news section: https://www.blackmagicdesign.com/support/family/davinci-resolve-and-fusion

Resolve 12.5 4K H.264 render fail on windows 7

  • Resolve 12.5 on windows, UHD H.264 requires windows 10
  • alternative solution: QuickTime>MPEG4 Video>3840×2160 Ultra HD

Resolve 14,15 initialize the discrete GPU

  • Problem: after install, resolve pop “Davinchi Resolve is unable to run as the application was not able to initialize the discrete GPU. Please ensure that DaVinci Resolve is configured to run in performance mode in your graphics card settings utility.”
  • Solution:
    • install the new driver for your discrete GPU, or just install latest driver for your graphic card
    • if you have switchable graphic laptop, in graphic setting, choose “performance” for that resolve application in graphic utility.

Resolve 16,17 and iphone hevc code video shows offline

  • on windows 10, you need to install the hevc codec from windows store, (

HEVC Video Extensions from Device Manufacturer ) free version by Run (win+r)

ms-windows-store://pdp/?ProductId=9n4wgh0z6vhq

Resolve 18 stuck at loading project

  • solution: just task manager to end it, reopen will be fine
  • appwiki/resolve.txt
  • Last modified: 2023/03/02 15:43
  • by ying