ebu-mxfsdk
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:EBU MXF SDK - An SDK for MXF embedded EBUCore metadata processing and analysis
# EBU MXF SDK v2.0

The EBU MXF SDK is a software development kit for the manipulation of MXF files with the aim of adding embedded descriptive metadata, in the form of [EBUCore](http://tech.ebu.ch/lang/en/MetadataEbuCore) metadata. Additionally, the SDK can be used to analyze the structure of MXF files and generate [ST-434](http://standards.smpte.org/content/978-1-61482-595-1/st-434-2006/SEC1.abstract)-compliant reports that describe their properties and header information.

## Context

While file-based media production has now found its way into the production 
processes of most broadcasters and production facilities, 
building unified workflows from heterogenous file-based systems 
remains challenging. When exchanges of audiovisual material require 
accompanying metadata to describe its semantics and origins, integration 
complications about interfaces, metadata formats and delivery mechanisms 
(busses, SOAP interfaces, FTP servers, ...) often manifest themselves.

A solution is to embed the descriptive metadata in the essence containers themselves 
such that it can no longer get lost and needs no separate out-of-band delivery mechanism; 
if the essence arrives, so does the metadata.

The software in this repository is a software development kit, 
the result of a collaborative project of [EBU](http://www.ebu.ch) and [Limecraft](http://www.limecraft.com), 
for embedding descriptive metadata into MXF files. The resulting files 
can be used to tie systems in a media production chain together. 

The code in this SDK extends the [BMX](http://sourceforge.net/projects/bmxlib/) libraries developed by BBC Research for the manipulation and creation of broadcast MXF files.

## Features

* In its current version, the SDK can be employed to embed EBUCore [EBUCore](http://tech.ebu.ch/lang/en/MetadataEbuCore) 
metadata documents into MXF file containers. The SDK is constructed such that additional metadata specifications can be easily added.
* The SDK also offers analysis capabilities and can be used to generated SMPTE ST-434-compliant XML reports describing the properties of MXF files.

## Getting Started

The code of the SDK can be obtained in two ways.

* From our [Sourceforge project](http://sourceforge.net/projects/ebu-mxfsdk/files/), where we offer prepackaged installers for Windows platforms.
* From this repository. Git clone this repo and its submodules, and build using Microsoft Visual Studio/C++ 2010 (or later).

## Included command line tools

### ebu2mxf

The ebu2mxf example program in ebu-bmx/apps/ebu2mxf opens an existing MXF file, and the EBUCore metadata is appended to its most appropriated (closed and complete metadata where available) set of metadata, while attempting to modify only the file metadata without rewriting its essence.

	Usage: ebu2mxf <> 
	Options:
	 -h | --help           Show usage and exit
	 -v | --version        Print version info
	 -l              Log filename. Default log to stderr/stdout
	 -i                    Print file information to stdout
	 --ebu-core      Write embedded EBU Core metadata to file
     --force-header        Force metadata to be appended into the header partition
     --dark                Write EBU Core metadata into a dark metadata set
     --sidecar             Write EBU Core metadata as a side-car reference
     --dark-key            Use this custom dark metadata key for metadata embedding.
                           The provided key should a SMPTE UL, formatted as a 'urn:smpte:ul:...'.
     --rp2057              Embed EBU Core metadata according to SMPTE RP 2057 XML embedding.
                           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.
     --remove              Remove EBU Core metadata from the MXF file header metadata
    SMPTE RP2057-based XML embedding options:
     --xml-scheme-id   Set the XML payload scheme identifier associated with the RP-2057-embedded metadata.
                           The  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 '-' separator,
                           A default EBU Core scheme identifier is used if this option is not provided.
     --xml-lang       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.     
         

### mxf2ebu

The mxf2ebu example program in ebu-bmx/apps/mxf2ebu extracts EBUCore metadata. An existing MXF file is opened, and the EBUCore metadata is read from its metadata and written to an EBUCore-compliant XML document.

	Usage: mxf2ebu.exe <> 
	Options:
	 -h | --help           Show usage and exit
	 -v | --version        Print version info
	 -l              Log filename. Default log to stderr/stdout
	 -i                    Print file information to stdout
	 --ebu-core      Write embedded EBU Core metadata to file
     --dark-key            Use this custom dark metadata key when searching for dark embedded metadata.
                           The provided key should a SMPTE UL, formatted as a 'urn:smpte:ul:...'.
     --xml-scheme-id   Use this XML scheme when searching for relevant RP2057-embedded metadata.
                           The  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 '-' separator,
                           A default EBU Core scheme identifier is used if this option is not provided.
                           

### raw2bmx

The raw2bmx example program in ebu-mxfsdk/apps/raw2bmx constructs a new MXF file from a number of essence tracks (delivered in separate files) and the EBUCore metadata (encoded as KLV packets) are mixed in with the newly constructed metadata (incl., track structure and essence characteristics) of the MXF file. The EBUCore metadata is provided in the form of a EBUCore-compliant XML document.

    Usage: raw2bmx.exe <> [<> ]+
    Options (* means option is required):
      -h | --help             Show usage and exit
      -v | --version          Print version info
      -l                Log filename. Default log to stderr/stdout
     --log-level       Set the log level. 0=debug, 1=info, 2=warning, 3=error. Default is 1
      -t                Clip type: as02, as11op1a, as11d10, op1a, avid, d10, rdd9, as10, wave. Default is op1a
    * -o                as02:  is a bundle name
                              as11op1a/as11d10/op1a/d10/rdd9/as10/wave:  is a filename
                              avid:  is a filename prefix
      --prod-info 
                  
                  
                  
                  
                              Set the product info in the MXF Identification set
                               is a string and is the Company Name property
                               is a string and is the Product Name property
                               has format '....' and is the Product Version property. Set to '0.0.0.0.0' to omit it
                               is a string and is the Version String property
                               is a UUID (see Notes at the end) and is the Product UID property
      -f                Set the frame rate, overriding any frame rate parsed from the essence data
                              The  is either 'num', 'num'/'den', 23976 (=24000/1001), 2997 (=30000/1001) or 5994 (=60000/1001)
      --dflt-rate       Set the default frame rate which is used when no rate is provided by the essence data. Without this option the default is 25
                              The  is either 'num', 'num'/'den', 23976 (=24000/1001), 2997 (=30000/1001) or 5994 (=60000/1001)
      -y         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
      --clip            Set the clip name
      --dur            Set the duration in frames in frame rate units. Default is minimum input duration
      --rt            Wrap at realtime rate x , where  is a floating point value
                               value 1.0 results in realtime rate, value < 1.0 slower and > 1.0 faster
      --avcihead   
                              Default AVC-Intra sequence header data (512 bytes) to use when the input file does not have it
                               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  to 'all' for all formats listed above
                              The 512 bytes are extracted from  starting at  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
      --track-map       Map input audio channels to output tracks. See below for details of the  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 ' <- 
      --dump-track-map-exit   Same as --dump-track-map, but exit immediately afterwards

      as11op1a/as11d10/as11rdd9/op1a/rdd9/d10:
        --head-fill      Reserve minimum  at the end of the header metadata using a KLV Fill
                                Add a 'K' suffix for kibibytes and 'M' for mibibytes

      as02:
        --mic-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       Set ShimName element value in shim.xml file to . Default is 'Sample File'
        --shim-id           Set ShimID element value in shim.xml file to . Default is 'http://bbc.co.uk/rd/as02/default-shim.txt'
        --shim-annot       Set AnnotationText element value in shim.xml file to . Default is 'Default AS-02 shim'

      as02/as11op1a/op1a/rdd9/as10:
        --part        Video essence partition interval in frames, or seconds with 's' suffix. Default single partition

      as11op1a/as11d10:
        --dm       Set descriptive framework property.  is 'as11' or 'dpp'
        --dm-file         Parse and set descriptive framework properties from text file .  is 'as11' or 'dpp'
        --seg                    Parse and set segmentation data from text file 
        --spec-id                  Set the AS-11 specification identifier labels associated with 
                                       The  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

      as11op1a/op1a/rdd9/as10:
        --out-start     Offset to start of first output frame, eg. pre-charge in MPEG-2 Long GOP
        --out-end       Offset (positive value) from last frame to last output frame, eg. rollout in MPEG-2 Long GOP

      as11op1a/as11d10/op1a/d10/rdd9/as10:
        --seq-off        Sound sample sequence offset. Default 0 for as11d10/d10 and not set (0) for as11op1a/op1a

      as11op1a/op1a/rdd9/as10:
        --single-pass           Write file in a single pass
                                The header and body partitions will be incomplete
        --file-md5              Calculate an MD5 checksum of the file. This requires writing in a single pass (--single-pass is assumed)

      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
        --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/d10:
        --xml-scheme-id     Set the XML payload scheme identifier associated with the following --embed-xml option.
                                The  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         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   Embed the XML from  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/rdd9:
        --ard-zdf-hdf           Use the ARD ZDF HDF profile

      as11d10/d10:
        --d10-mute       Indicate using a string of 8 '0' or '1' which sound channels should be muted. The lsb is the rightmost digit
        --d10-invalid    Indicate using a string of 8 '0' or '1' which sound channels should be flagged invalid. The lsb is the rightmost digit

      as10:
        --shim-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    Parse and set descriptive framework properties from text file 
                                N.B. 'ShimName' is the only mandatary property of AS10 metadata set
        --dm as10      Set descriptive framework property
        --pass-dm               Copy descriptive metadata from the input file. The metadata can be overidden by other options
        --mpeg-checks []  Enable AS-10 compliancy checks. The file  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   Max same violations warnings logged, default 3

      rdd9/as10:
        --mp-uid          Set the Material Package UID. Autogenerated by default

      avid:
        --project         Set the Avid project name
        --tape            Source tape name
        --import          Source import 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
        --aux      Set up to 5 auxiliary start timecodes. Multiple timecodes are separated by commas e.g. --aux 15:02:15:23,09:37:08:10
                                The c character in the pattern should be ':' for non-drop frame; any other character indicates drop frame
        --comment       Add 'Comments' user comment to the MaterialPackage
        --desc          Add 'Descript' user comment to the MaterialPackage
        --tag      Add  user comment to the MaterialPackage. Option can be used multiple times
        --locator   
                                Add locator at  (in frame rate units) with  and 
                                 format is o?hh:mm:sscff, where the optional 'o' indicates it is an offset
        --mp-uid          Set the Material Package UID. Autogenerated by default
        --mp-created    Set the Material Package creation date. Default is 'now'
        --psp-uid         Set the tape/import Source Package UID. Autogenerated by default
        --psp-created   Set the tape/import Source Package creation date. Default is 'now'
        --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      Set the duration which should be shown whilst the file is growing
                                Avid will show 'Capture in Progress' when this option is used

      op1a/avid:
        --force-no-avci-head    Strip AVCI header (512 bytes, sequence and picture parameter sets) if present

      wave:
        --orig            Set originator in the output 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 

本源码包内暂不包含可直接显示的源代码文件,请下载源码包。