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

  • Proper packaging (we plan to support Ubuntu 14.04 / 16.04 at first), this include clairmeta python package, all the dependent python package and asdcplib.

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 asdcplib (macOS / Linux) :

wget http://download.cinecert.com/asdcplib/asdcplib-2.7.19.tar.gz
tar xzf asdcplib-2.7.19.tar.gz
cd asdcplib-2.7.19
./configure
make install

Install clairmeta :

pip install 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

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.0b3.tar.gz (68.8 kB view details)

Uploaded Source

Built Distribution

clairmeta-1.0.0b3-py2.py3-none-any.whl (99.5 kB view details)

Uploaded Python 2Python 3

File details

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

File metadata

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

File hashes

Hashes for clairmeta-1.0.0b3.tar.gz
Algorithm Hash digest
SHA256 5b28230d3b33509b192911693dcb2e99696636605e8f58a0dbca52d1b43c2d35
MD5 6fc172a084fccd911cc782db86487ff9
BLAKE2b-256 ef3ca35905ff5342b421da4e81c15eae1cb7c5b1bd9f61b4aaa6cdcc84a514ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clairmeta-1.0.0b3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c7597124830da64b9f7cfc64527a9d7e4781062dda909ab8e8ecf26d502ee19d
MD5 bee7046ce00f7d01cf8ef16965e84e79
BLAKE2b-256 3d06b2dfdb491ff60eef7107be2d2541374edc1993d87a20b12b38fa62a51878

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