Skip to content

Instantly share code, notes, and snippets.

@brimestoned
Created March 8, 2019 18:46
Show Gist options
  • Save brimestoned/f47d4736641ef02f1d90b0b3c28b9237 to your computer and use it in GitHub Desktop.
Save brimestoned/f47d4736641ef02f1d90b0b3c28b9237 to your computer and use it in GitHub Desktop.
Use <mxf input> '-' for standard input
Options (* means option is required):
-h | --help Show usage and exit
-v | --version Print version info
-p Print progress percentage to stdout
-l <file> Log filename. Default log to stderr/stdout
--log-level <level> Set the log level. 0=debug, 1=info, 2=warning, 3=error. Default is 1
-t <type> Clip type: as02, as11op1a, as11d10, as11rdd9, op1a, avid, d10, rdd9, as10, wave. Default is op1a
* -o <name> as02: <name> is a bundle name
as11op1a/as11d10/op1a/d10/rdd9/as10/wave: <name> is a filename
avid: <name> is a filename prefix
--prod-info <cname>
<pname>
<ver>
<verstr>
<uid>
Set the product info in the MXF Identification set
<cname> is a string and is the Company Name property
<pname> is a string and is the Product Name property
<ver> has format '<major>.<minor>.<patch>.<build>.<release>' and is the Product Version property. Set to '0.0.0.0.0' to omit it
<verstr> is a string and is the Version String property
<uid> is a UUID (see Notes at the end) and is the Product UID property
--create-date <tstamp> Set the creation date in the MXF Identification set. Default is 'now'
--input-file-md5 Calculate an MD5 checksum of the input file
-y <hh:mm:sscff> Override input start timecode. Default 00:00:00:00
The c character in the pattern should be ':' for non-drop frame; any other character indicates drop frame
--mtc Check first and use the input material package start timecode if present
--fstc Check first and use the file source package timecode if present
--pstc Check first and use the physical source package timecode if present
--tc-rate <rate> Start timecode rate to use when input is audio only
The <rate> is either 'num', 'num'/'den', 23976 (=24000/1001), 2997 (=30000/1001) or 5994 (=60000/1001)
--clip <name> Set the clip name
--start <frame> Set the start frame in input edit rate units. Default is 0
--dur <frame> Set the duration in frames in input edit rate units. Default is minimum input duration
--check-end Check at the start that the last (start + duration - 1) frame can be read
--check-complete Check that the input file is complete
--group Use the group reader instead of the sequence reader
Use this option if the files have different material packages
but actually belong to the same virtual package / group
--no-reorder Don't attempt to order the inputs in a sequence
Use this option for files with broken timecode
--rt <factor> Transwrap at realtime rate x <factor>, where <factor> is a floating point value
<factor> value 1.0 results in realtime rate, value < 1.0 slower and > 1.0 faster
--gf Support growing files. Retry reading a frame when it fails
--gf-retries <max> Set the maximum times to retry reading a frame. The default is 10.
--gf-delay <sec> Set the delay (in seconds) between a failure to read and a retry. The default is 1.000000.
--gf-rate <factor> Limit the read rate to realtime rate x <factor> after a read failure. The default is 1.500000
<factor> value 1.0 results in realtime rate, value < 1.0 slower and > 1.0 faster
--http-min-read <bytes>
Set the minimum number of bytes to read when accessing a file over HTTP. The default is 65536.
--no-precharge Don't output clip/track with precharge. Adjust the start position and duration instead
--no-rollout Don't output clip/track with rollout. Adjust the duration instead
--rw-intl Interleave input reads with output writes
--rw-intl-size The interleave size. Default is 65536
Value must be a multiple of the system page size, 4096
--avcihead <format> <file> <offset>
Default AVC-Intra sequence header data (512 bytes) to use when the input file does not have it
<format> is a comma separated list of one or more of the following integer values:
0: AVC-Intra 100 1080i50
1: AVC-Intra 100 1080i59.94
2: AVC-Intra 100 1080p25
3: AVC-Intra 100 1080p29.97
4: AVC-Intra 100 720p25
5: AVC-Intra 100 720p50
6: AVC-Intra 100 720p29.97
7: AVC-Intra 100 720p59.94
8: AVC-Intra 50 1080i50
9: AVC-Intra 50 1080i29.97
10: AVC-Intra 50 1080p25
11: AVC-Intra 50 1080p29.97
12: AVC-Intra 50 720p25
13: AVC-Intra 50 720p50
14: AVC-Intra 50 720p29.97
15: AVC-Intra 50 720p59.94
16: AVC-Intra 100 1080p50
17: AVC-Intra 100 1080p59.94
18: AVC-Intra 50 1080p50
19: AVC-Intra 50 1080p59.94
20: AVC-Intra 50 1080p23.98
21: AVC-Intra 50 720p23.98
22: AVC-Intra 100 1080p23.98
23: AVC-Intra 100 720p23.98
24: AVC-Intra 200 1080i50
25: AVC-Intra 200 1080i59.94
26: AVC-Intra 200 1080p25
27: AVC-Intra 200 1080p29.97
28: AVC-Intra 200 1080p23.98
29: AVC-Intra 200 720p25
30: AVC-Intra 200 720p50
31: AVC-Intra 200 720p29.97
32: AVC-Intra 200 720p59.94
33: AVC-Intra 200 720p23.98
34: AVC-Intra 200 1080p50
35: AVC-Intra 200 1080p59.94
or set <format> to 'all' for all formats listed above
The 512 bytes are extracted from <file> starting at <offset> bytes
and incrementing 512 bytes for each format in the list
--ps-avcihead Panasonic AVC-Intra sequence header data for Panasonic-compatible files that don't include the header data
These formats are supported:
AVC-Intra 100 1080i50, AVC-Intra 100 1080p25, AVC-Intra 100 720p25, AVC-Intra 100 720p50,
AVC-Intra 50 1080i50, AVC-Intra 50 1080p25, AVC-Intra 50 720p25, AVC-Intra 50 720p50
-a <n:d> Override or set the image aspect ratio
--bsar Set image aspect ratio in video bitstream. Currently supports D-10 essence types only
--vc2-mode <mode> Set the mode that determines how the VC-2 data is wrapped
<mode> is one of the following integer values:
0: Passthrough input, but add a sequence header if not present, remove duplicate/redundant sequence headers
and fix any incorrect parse info offsets and picture numbers
1: (default) Same as 0, but remove auxiliary and padding data units and complete the sequence in each frame
--locked <bool> Override or set flag indicating whether the number of audio samples is locked to the video. Either true or false
--audio-ref <level> Override or set audio reference level, number of dBm for 0VU
--dial-norm <value> Override or set gain to be applied to normalize perceived loudness of the clip
--signal-std <value> Override or set the video signal standard. The <value> is one of the following:
'none', 'bt601', 'bt1358', 'st347', 'st274', 'st296', 'st349', 'st428'
--frame-layout <value> Override or set the video frame layout. The <value> is one of the following:
'fullframe', 'separatefield', 'singlefield', 'mixedfield', 'segmentedframe'
--field-dom <value> Override or set which field is first in temporal order. The <value> is 1 or 2
--transfer-ch <value> Override or set the transfer characteristic label
The <value> is a SMPTE UL, formatted as a 'urn:smpte:ul:...' or one of the following:
'bt470', 'bt709', 'st240', 'st274', 'bt1361', 'linear', 'dcdm',
'iec61966', 'bt2020', 'st2084', 'hlg'
--coding-eq <value> Override or set the coding equations label
The <value> is a SMPTE UL, formatted as a 'urn:smpte:ul:...' or one of the following:
'bt601', 'bt709', 'st240', 'ycgco', 'gbr', 'bt2020'
--color-prim <value> Override or set the color primaries label
The <value> is a SMPTE UL, formatted as a 'urn:smpte:ul:...' or one of the following:
'st170', 'bt470', 'bt709', 'bt2020', 'dcdm', 'p3'
--color-siting <value> Override or set the color siting. The <value> is one of the following:
'cositing', 'horizmp', '3tap', 'quincunx', 'bt601', 'linealt', 'vertmp', 'unknown'
(Note that 'bt601' is deprecated in SMPTE ST 377-1. Use 'cositing' instead)
--black-level <value> Override or set the black reference level
--white-level <value> Override or set the white reference level
--color-range <value> Override or set the color range
--rdd36-opaque Override and treat RDD-36 4444 or 4444 XQ as opaque by omitting the Alpha Sample Depth property
--rdd36-comp-depth <value> Override of set component depth for RDD-36. Defaults to 10 if not present in input file
--ignore-input-desc Don't use input MXF file descriptor properties to fill in missing information
--track-map <expr> Map input audio channels to output tracks. See below for details of the <expr> format
--dump-track-map Dump the output audio track map to stderr.
The dumps consists of a list output tracks, where each output track channel
is shown as '<output track channel> <- <input channel>
--dump-track-map-exit Same as --dump-track-map, but exit immediately afterwards
as11op1a/as11d10/as11rdd9/op1a/rdd9/d10:
--head-fill <bytes> Reserve minimum <bytes> at the end of the header metadata using a KLV Fill
Add a 'K' suffix for kibibytes and 'M' for mibibytes
as02:
--mic-type <type> Media integrity check type: 'md5' or 'none'. Default 'md5'
--mic-file Calculate checksum for entire essence component file. Default is essence only
--shim-name <name> Set ShimName element value in shim.xml file to <name>. Default is 'Sample File'
--shim-id <id> Set ShimID element value in shim.xml file to <id>. Default is 'http://bbc.co.uk/rd/as02/default-shim.txt'
--shim-annot <str> Set AnnotationText element value in shim.xml file to <str>. Default is 'Default AS-02 shim'
as02/as11op1a/op1a/rdd9/as10:
--part <interval> Video essence partition interval in frames in input edit rate units, or (floating point) seconds with 's' suffix. Default single partition
as11op1a/as11d10/as11rdd9:
--dm <fwork> <name> <value> Set descriptive framework property. <fwork> is 'as11' or 'dpp'
--dm-file <fwork> <name> Parse and set descriptive framework properties from text file <name>. <fwork> is 'as11' or 'dpp'
--seg <name> Parse and set segmentation data from text file <name>
--pass-dm Copy descriptive metadata from the input file. The metadata can be overidden by other options
--spec-id <id> Set the AS-11 specification identifier labels associated with <id>
The <id> is one of the following:
as11-x1 : AMWA AS-11 X1, delivery of finished UHD programs to Digital Production Partnership (DPP) broadcasters
as11-x2 : AMWA AS-11 X2, delivery of finished HD AVC Intra programs to a broadcaster or publisher
as11-x3 : AMWA AS-11 X3, delivery of finished HD AVC Long GOP programs to a broadcaster or publisher
as11-x4 : AMWA AS-11 X4, delivery of finished HD AVC Long GOP programs to a broadcaster or publisher
as11-x7 : AMWA AS-11 X7, delivery of finished SD D10 programs to a broadcaster or publisher
as11-x8 : AMWA AS-11 X8, delivery of finished HD (MPEG-2) programs to North American Broadcasters Association (NABA) broadcasters
as02/as11op1a/as11d10/op1a/d10/rdd9/as10:
--afd <value> Active Format Descriptor 4-bit code from table 1 in SMPTE ST 2016-1. Default is input file's value or not set
as11op1a/as11d10/op1a/d10/rdd9/as10:
--single-pass Write file in a single pass
Header and body partitions will be incomplete for as11op1a/op1a if the number if essence container bytes per edit unit is variable
--file-md5 Calculate an MD5 checksum of the output file. This requires writing in a single pass (--single-pass is assumed)
as11op1a/op1a:
--pass-anc <filter> Pass through ST 436 ANC data tracks
<filter> is a comma separated list of ANC data types to pass through
The following ANC data types are supported in <filter>:
all : pass through all ANC data
st2020 : SMPTE ST 2020 / RDD 6 audio metadata
st2016 : SMPTE ST 2016-3/ AFD, bar and pan-scan data
sdp : SMPTE RDD 8 / OP-47 Subtitling Distribution Packet data
st12 : SMPTE ST 12 Ancillary timecode
st334 : SMPTE ST 334-1 EIA 708B, EIA 608 and data broadcast (DTV)
--pass-vbi Pass through ST 436 VBI data tracks
--st436-mf <count> Set the <count> of frames to examine for ST 436 ANC/VBI manifest info. Default is 2
The manifest is used at the start to determine whether an output ANC data track is created
Set <count> to 0 to always create an ANC data track if the input has one
--anc-const <size> Use to indicate that the ST 436 ANC frame element data, excl. key and length, has a constant <size>. A variable size is assumed by default
--anc-max <size> Use to indicate that the ST 436 ANC frame element data, excl. key and length, has a maximum <size>. A variable size is assumed by default
--st2020-max The ST 436 ANC maximum frame element data size for ST 2020 only is calculated from the extracted manifest. Option '--pass-anc st2020' is required.
--vbi-const <size> Use to indicate that the ST 436 VBI frame element data, excl. key and length, has a constant <size>. A variable size is assumed by default
--vbi-max <size> Use to indicate that the ST 436 VBI frame element data, excl. key and length, has a maximum <size>. A variable size is assumed by default
--rdd6 <file> Add ST 436 ANC data track containing 'static' RDD-6 audio metadata from XML <file>
The timecode fields are ignored, i.e. they are set to 'undefined' values in the RDD-6 metadata stream
--rdd6-lines <lines> A single or pair of line numbers, using ',' as the separator, for carriage of the RDD-6 ANC data. The default is a pair of numbers, '9,572'
--rdd6-sdid <sdid> The SDID value indicating the first audio channel pair associated with the RDD-6 data. Default is 4
op1a/rdd9/d10:
--xml-scheme-id <id> Set the XML payload scheme identifier associated with the following --embed-xml option.
The <id> is one of the following:
* a SMPTE UL, formatted as a 'urn:smpte:ul:...',
* a UUID, formatted as a 'urn:uuid:...'or as 32 hexadecimal characters using a '.' or '-' seperator,
* 'as11', which corresponds to urn:smpte:ul:060e2b34.04010101.0d010801.04010000
A default BMX scheme identifier is used if this option is not provided
--xml-lang <tag> Set the RFC 5646 language tag associated with the the following --embed-xml option.
Defaults to the xml:lang attribute in the root element or empty string if not present
--embed-xml <filename> Embed the XML from <filename> using the approach specified in SMPTE RP 2057
If the XML size is less than 64KB and uses UTF-8 or UTF-16 encoding (declared in
the XML prolog) then the XML data is included in the header metadata. Otherwise
a Generic Stream partition is used to hold the XML data.
op1a:
--min-part Only use a header and footer MXF file partition. Use this for applications that don't support
separate partitions for header metadata, index tables, essence container data and footer
--body-part Create separate body partitions for essence data
and don't create separate body partitions for index table segments
--repeat-index Repeat the index table segments in the footer partition
--clip-wrap Use clip wrapping for a single sound track
--mp-track-num Use the material package track number property to define a track order. By default the track number is set to 0
op1a/rdd9:
--ard-zdf-hdf Use the ARD ZDF HDF profile
as10:
--shim-name <name> Shim name for AS10 (used for setting 'ShimName' metadata and setting video/sound parameters' checks)
list of known shims: HIGH_HD_2014, CNN_HD_2012, NRK_HD_2012, JVC_HD_35_VBR_2012, JVC_HD_25_CBR_2012
--dm-file as10 <name> Parse and set descriptive framework properties from text file <name>
N.B. 'ShimName' is the only mandatary property of AS10 metadata set
--dm as10 <name> <value> Set descriptive framework property
--pass-dm Copy descriptive metadata from the input file. The metadata can be overidden by other options
--mpeg-checks [<name>] Enable AS-10 compliancy checks. The file <name> is optional and contains expected descriptor values
--loose-checks Don't stop processing on detected compliancy violations
--print-checks Print default values of mpeg descriptors and report on descriptors either found in mpeg headers or copied from mxf headers
--max-same-warnings <value> Max same violations warnings logged, default 3
as11d10/d10:
--d10-mute <flags> Indicate using a string of 8 '0' or '1' which sound channels should be muted. The lsb is the rightmost digit
--d10-invalid <flags> Indicate using a string of 8 '0' or '1' which sound channels should be flagged invalid. The lsb is the rightmost digit
avid:
--project <name> Set the Avid project name
--tape <name> Source tape name
--import <name> Source import name. <name> is one of the following:
- a file URL starting with 'file://'
- an absolute Windows (starts with '[A-Z]:') or *nix (starts with '/') filename
- a relative filename, which will be converted to an absolute filename
--comment <string> Add 'Comments' user comment to the MaterialPackage
--desc <string> Add 'Descript' user comment to the MaterialPackage
--tag <name> <value> Add <name> user comment to the MaterialPackage. Option can be used multiple times
--locator <position> <comment> <color>
Add locator at <position> with <comment> and <color>
<position> format is o?hh:mm:sscff, where the optional 'o' indicates it is an offset
--mp-uid <umid> Set the Material Package UID. Autogenerated by default
--mp-created <tstamp> Set the Material Package creation date. Default is 'now'
--psp-uid <umid> Set the tape/import Source Package UID
tape: autogenerated by default
import: single input Material Package UID or autogenerated by default
--psp-created <tstamp> Set the tape/import Source Package creation date. Default is 'now'
--ess-marks Convert XDCAM Essence Marks to locators
--allow-no-avci-head Allow inputs with no AVCI header (512 bytes, sequence and picture parameter sets)
--avid-gf Use the Avid growing file flavour
--avid-gf-dur <dur> Set the duration which should be shown whilst the file is growing
The default value is the output duration
--ignore-d10-aes3-flags Ignore D10 AES3 audio validity flags and assume they are all valid
This workarounds an issue with Avid transfer manager which sets channel flags 4 to 8 to invalid
op1a/avid:
--force-no-avci-head Strip AVCI header (512 bytes, sequence and picture parameter sets) if present
wave:
--orig <name> Set originator in the Wave bext chunk. Default 'bmx'
as02/op1a/as11op1a:
--use-avc-subdesc Use the AVC sub-descriptor rather than the MPEG video descriptor for AVC-Intra tracks
op1a/as11op1a/rdd9:
--audio-layout <label> Set the Wave essence descriptor channel assignment label which identifies the audio layout mode in operation
The <label> is one of the following:
* a SMPTE UL, formatted as a 'urn:smpte:ul:...',
* 'as11-mode-0', which corresponds to urn:smpte:ul:060e2b34.04010101.0d010801.02010000,
* 'as11-mode-1', which corresponds to urn:smpte:ul:060e2b34.04010101.0d010801.02020000,
* 'as11-mode-2', which corresponds to urn:smpte:ul:060e2b34.04010101.0d010801.02030000
--track-mca-labels <scheme> <file> Insert audio labels defined in <file> using the symbol <scheme>
The available <scheme>s are: 'as11'
Input options:
--disable-tracks <tracks> A comma separated list of track indexes and/or ranges to disable.
A track is identified by the index reported by mxf2raw
A range of track indexes is specified as '<first>-<last>', e.g. 0-3
--disable-audio Disable audio tracks
--disable-video Disable video tracks
--disable-data Disable data tracks
Notes:
- <umid> format is 64 hexadecimal characters and any '.' and '-' characters are ignored
- <uuid> format is 32 hexadecimal characters and any '.' and '-' characters are ignored
- <tstamp> format is YYYY-MM-DDThh:mm:ss:qm where qm is in units of 1/250th second
The track mapping <expr> format is one of the following:
'mono' : each input audio channel is mapped to a single-channel output track
'stereo' : input audio channels are paired to stereo-channel output tracks
A silence channel is added to the last output track if the channel count is odd
'singlemca': all input audio channels are mapped to a single multi-channel output track
<pattern> : a pattern defining how input channels map to output track channels - see below
The track mapping <pattern> specifies how input audio channels are mapped to output track channels
A <pattern> consists of a list of <group>s separated by a ';'.
A <group> starts with an optional 'm', followed by a list of <element> separated by a ','.
An 'm' indicates that each channel in the <group> is mapped to separate single-channel output track.
If an 'm' is not present then the channels are mapped to a single output track.
A <element> is either a <channel>, <range>, <silence> or <remainder>.
A <channel> is an input channel number starting from 0.
The input channel number is the number derived from the input track order reported by mxf2raw for the
input files in the same order and including any --disable input options. Each channel in a track
contributes 1 to the overall channel number.
A <range> is 2 <channel>s separated by a '-' and includes all channels starting with the first number
and ending with the last number.
A <silence> is 's' followed by a <count> and results in <count> silence channels added to the output track.
A <remainder> is 'x', and results in all remaining channels being added to the output track.
Here are some <pattern> examples:
'mx' : equivalent to 'mono'
'0,1;x' : the first 2 channels mapped to a stereo output track and all remaining channels mapped
to a single multi-channel track
'2-7;0,1': 6 channel output track followed by a 2 channel output track
'0,1,s2' : 2 input channels plus 2 silence channels mapped to a single output track
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment