Initial commit

This commit is contained in:
Brett Williams
2022-10-04 23:09:09 -07:00
commit 1c304e77f5
13 changed files with 1717 additions and 0 deletions

121
utilities/compressor.py Normal file
View File

@@ -0,0 +1,121 @@
#! /usr/bin/python
from generic_renderer import *
import glob
import logging
import subprocess
# Documentation
# https://help.apple.com/compressor/mac/4.0/en/compressor/usermanual/Compressor%204%20User%20Manual%20(en).pdf
def compressor_path():
return '/Applications/Compressor.app/Contents/MacOS/Compressor'
class CompressorRenderer(Renderer):
renderer = 'Compressor'
# Usage: Compressor [Cluster Info] [Batch Specific Info] [Optional Info] [Other Options]
#
# -computergroup <name> -- name of the Computer Group to use.
# --Batch Specific Info:--
# -batchname <name> -- name to be given to the batch.
# -priority <value> -- priority to be given to the batch. Possible values are: low, medium or high
# Job Info: Used when submitting individual source files. Following parameters are repeated to enter multiple job targets in a batch
# -jobpath <url> -- url to source file.
# -- In case of Image Sequence, URL should be a file URL pointing to directory with image sequence.
# -- Additional URL query style parameters may be specified to set frameRate (file:///myImageSequenceDir?frameRate=29.97) and audio file (e.g. file:///myImageSequenceDir?audio=/usr/me/myaudiofile.mov).
# -settingpath <path> -- path to settings file.
# -locationpath <path> -- path to location file.
# -info <xml> -- xml for job info.
# -jobaction <xml> -- xml for job action.
# -scc <url> -- url to scc file for source
# -startoffset <hh:mm:ss;ff> -- time offset from beginning
# -in <hh:mm:ss;ff> -- in time
# -out <hh:mm:ss;ff> -- out time
# -annotations <path> -- path to file to import annotations from; a plist file or a Quicktime movie
# -chapters <path> -- path to file to import chapters from
# --Optional Info:--
# -help -- Displays, on stdout, this help information.
# -checkstream <url> -- url to source file to analyze
# -findletterbox <url> -- url to source file to analyze
#
# --Batch Monitoring Info:--
# Actions on Job:
# -monitor -- monitor the job or batch specified by jobid or batchid.
# -kill -- kill the job or batch specified by jobid or batchid.
# -pause -- pause the job or batch specified by jobid or batchid.
# -resume -- resume previously paused job or batch specified by jobid or batchid.
# Optional Info:
# -jobid <id> -- unique id of the job usually obtained when job was submitted.
# -batchid <id> -- unique id of the batch usually obtained when job was submitted.
# -query <seconds> -- The value in seconds, specifies how often to query the cluster for job status.
# -timeout <seconds> -- the timeOut value, in seconds, specifies when to quit the process.
# -once -- show job status only once and quit the process.
#
# --Sharing Related Options:--
# -resetBackgroundProcessing [cancelJobs] -- Restart all processes used in background processing, and optionally cancel all queued jobs.
#
# -repairCompressor -- Repair Compressor config files and restart all processes used in background processing.
#
# -sharing <on/off> -- Turn sharing of this computer on or off.
#
# -requiresPassword [password] -- Sharing of this computer requires specified password. Computer must not be busy processing jobs when you set the password.
#
# -noPassword -- Turn off the password requirement for sharing this computer.
#
# -instances <number> -- Enables additional Compressor instances.
#
# -networkInterface <bsdname> -- Specify which network interface to use. If "all" is specified for <bsdname>, all available network interfaces are used.
#
# -portRange <startNumber> <count> -- Defines what port range use, using start number specifying how many ports to use.
#
# --File Modification Options (all other parameters ignored):--
# -relabelaudiotracks <layout[1] layout[2]... layout[N]
# Supported values:
# Ls : Left Surround
# R : Right
# C : Center
# Rs : Right Surround
# Lt : Left Total
# L : Left
# Rt : Right Total
# LFE : LFE Screen
# Lc : Left Center
# Rls : Rear Surround Left
# mono : Mono
# LtRt : Matrix Stereo (Lt Rt)
# Rc : Right Center
# stereo : Stereo (L R)
# Rrs : Rear Surround Right
# -jobpath <url> -- url to source file. - Must be a QuickTime Movie file
# --Optional Info:--
# -renametrackswithlayouts (Optional, rename the tracks with the new channel layouts)
# -locationpath <path> -- path to location file. Modified movie will be saved here. If unspecified, changes will be saved in place, overwriting the original file.
def __init__(self, project, settings_path, output):
super(CompressorRenderer, self).__init__(project=project, output=output)
self.settings_path = settings_path
self.batch_name = os.path.basename(project)
self.cluster_name = 'This Computer'
self.timeout = 5
# /Applications/Compressor.app/Contents/MacOS/Compressor -clusterid "tcp://192.168.1.148:62995" -batchname "My First Batch" -jobpath ~/Movies/MySource.mov -settingpath ~/Library/Application\ Support/Compressor/Settings/MPEG-4.setting -destinationpath ~/Movies/MyOutput.mp4 -timeout 5
def _generate_subprocess(self):
x = [compressor_path(), '-batchname', datetime.now().isoformat(), '-jobpath', self.input, '-settingpath', self.settings_path, '-locationpath', self.output]
print(' '.join(x))
return x
def _parse_stdout(self, line):
print(line)
if __name__ == '__main__':
logging.basicConfig(format='%(asctime)s - %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.DEBUG)
r = CompressorRenderer('/Users/brett/Desktop/drone_raw.mp4', '/Applications/Compressor.app/Contents/Resources/Settings/Website Sharing/HD720WebShareName.compressorsetting', '/Users/brett/Desktop/test_drone_output.mp4')
r.start()
while r.is_running():
time.sleep(1)