Skip to main content

Digital Cinema Package (DCP) probing and checking utility

Project description

Build Status PyPI version

Clairmeta

Clairmeta is a python package for Digital Cinema Package (DCP) probing and checking.

This project status is Beta, the following needs to be done for the release :

  • Large scale tests on lots DCP (including D-Box, DVIs, OCAP, CCAP, …)

  • Copyright free test materials for unittest

Features

  • DCP Probe : metadata extraction of the whole DCP, including all XML fields and MXF assets inspection.

  • DCP Checker : advanced DCP validation tool, including (non exhaustive) :

    • SMPTE / Interop standard convention (naming, …)

    • Integrity (mime type, size, hash) of all assets

    • Foreign file identification

    • XSD Schema validation for XML files (VolIndex, AssetMap, CPL, PKL)

    • Digital signature validation (CPL, PKL)

    • Intra / Inter Reels integrity and coherence

    • Metadata match between CPL assets and MXF headers

    • Re-link VF / OV

    • Picture tests : FrameRate, BitRate, …

    • Sound tests : Channels, Sampling, …

    • Subtitle : Deep inspection of Interop and SMPTE subtitles

  • DSM / DCDM Checker : basic image file sequence validation with some specifics rules.

Installation

Requirements :

  • Python :

    • Should work on python 2.7 and python 3.3+

    • Tested on : python 2.7, python 3.6

  • Platform :

    • Should work on Windows, macOS, Linux

    • Tested on : macOS 10.12

Install from PyPI package :

pip install clairmeta

Install from Debian package :

# For Ubuntu 14.04 trusty
echo "deb https://dl.bintray.com/ymagis/Clairmeta trusty main" | sudo tee -a /etc/apt/sources.list
# For Ubuntu 16.04 xenial
echo "deb https://dl.bintray.com/ymagis/Clairmeta xenial main" | sudo tee -a /etc/apt/sources.list

sudo apt-get install python3-clairmeta

Usage

General

As a command line tool :

python3 -m clairmeta.cli probe -type dcp path/to/dcp
python3 -m clairmeta.cli probe -type dcp path/to/dcp -format json > dcp.json
python3 -m clairmeta.cli probe -type dcp path/to/dcp -format xml > dcp.xml
python3 -m clairmeta.cli check -type dcp path/to/dcp

As a python library :

from clairmeta import DCP

dcp = DCP("path/to/dcp")
# Parse DCP
dcp.parse()
# Check DCP
status, report = dcp.check()
# Check DCP VF against OV
status, report = dcp.check(ov_path="/path/to/dcp_ov")

Profiles

Check profile allow custom configuration of the DCP check process such as bypassing some unwanted tests or criticity specification. To implement a check profile, simply write a JSON file derived from this template (actual content listed below is for demonstration purpose only) :

  • criticality key allow custom criticity level specification, check name can be incomplete to quickly ignore a bunch of tests, default is used if no other match where found.

  • bypass key allow specific test bypassing, incomplete name are not allowed.

{
    "criticality": {
        "default": "ERROR",
        "check_dcnc_": "WARNING",
        "check_cpl_reel_duration_picture_subtitles": "WARNING",
        "check_picture_cpl_avg_bitrate": "WARNING",
        "check_picture_cpl_resolution": "WARNING"
    },
    "bypass": ["check_assets_pkl_hash"],
    "log_level": "INFO"
}

Custom profile check :

python3 -m clairmeta.cli check -type dcp path/to/dcp -profile path/to/profile.json
from clairmeta import DCP
from clairmeta.profile include load_profile

dcp = DCP("path/to/dcp")
profile = load_profile("/path/to/profile.json")
status, report = dcp.check(profile=profile)

Logging

Logging is customizable, see settings.py file or below. By default Clairmeta log to stdout and a rotated log file.

'level': 'INFO'  # Minimum log level
'enable_console': True  # Enable / Disable stdout logging
'enable_file': True  # Enable / Disable file logging
'file_name': '/log/path/clairmeta.log'  # Log file absolute path
'file_size': 1e6  # Individual log file maximum size
'file_count': 10  # Number of files to rotate on

Contributing

  • To setup your environment, use pipenv :

pip install pipenv
git clone https://github.com/Ymagis/ClairMeta.git
cd clairmeta
pipenv install [–two]
pipenv check
pipenv shell
# Code...
exit
  • Open a Pull Request

  • Open an Issue

Changes

The releases changes are available on Github: https://github.com/Ymagis/ClairMeta/releases

References

The following sources / software were used :

About

http://www.ymagis.com/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

clairmeta-1.0.0b4.tar.gz (72.9 kB view details)

Uploaded Source

Built Distribution

clairmeta-1.0.0b4-py2.py3-none-any.whl (99.4 kB view details)

Uploaded Python 2Python 3

File details

Details for the file clairmeta-1.0.0b4.tar.gz.

File metadata

  • Download URL: clairmeta-1.0.0b4.tar.gz
  • Upload date:
  • Size: 72.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for clairmeta-1.0.0b4.tar.gz
Algorithm Hash digest
SHA256 2473db5b1f596183d89026b5a6bdd124412b3b0237b1a1d72b1bfa6af96b3463
MD5 6ba0a79ecdff34f823de13db1d7ab637
BLAKE2b-256 46bde76b95777fc386ce5a69472d0d7e6ade30123c607d135e7956f03a5ac3b0

See more details on using hashes here.

File details

Details for the file clairmeta-1.0.0b4-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for clairmeta-1.0.0b4-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ce91865a56ecac09a8e4d0128dd0d564e1e4e00b5d67eba28943c65d99ff73e4
MD5 eafe8fb9cfc6be56c170ae41ca66eff5
BLAKE2b-256 e07ac2a36acc3f1fea59b6b56ffa8ca03890f5a22f0e71830e03bbee4a5ae79c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page