Key new feature of 17:
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))
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',)]
# ---- 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 |
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
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 |
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 |
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
Optimized Media and Proxy
Render Cache and Playback
Resolve 12.5.1 onwards MOV file crash issue
Resolve 12.5 4K H.264 render fail on windows 7
Resolve 14,15 initialize the discrete GPU
Resolve 16,17 and iphone hevc code video shows offline
HEVC Video Extensions from Device Manufacturer ) free version by Run (win+r)
ms-windows-store://pdp/?ProductId=9n4wgh0z6vhq
Resolve 18 stuck at loading project