Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
/ photon Public

Photon is a Java implementation of the Interoperable Master Format (IMF) standard. IMF is a SMPTE standard whose core constraints are defined in the specification st2067-2:2013

License

Notifications You must be signed in to change notification settings

Netflix/photon

Repository files navigation

Photon

Photon is a Java implementation of the Interoperable Master Format (IMF) standard. Photon offers tools for parsing, interpreting and validating constituent files that make an Interoperable Master Package (IMP). These include:

  • AssetMap (ST 429-9)
  • PackingList (ST 429-8)
  • Composition Playlist (ST 2067-3)
  • IMF Track Files (ST 2067-5)

Photon parses and reads IMF track files and serializes the metadata into the IMF Composition Playlist structure. Currently, Photon provides support for

  • IMF Application #2E (ST 2067-21)
  • Application #5 ACES (ST 2067-50)
  • Immersive Audio Bitstream (IAB) Level 0 Plug-in (ST 2067-201).
  • Isochronous Stream of XML Documents (ISXD) Plug-in (ST 2067-202).
  • Audio with Frame-based S-ADM Metadata Plug-in (ST 2067-203).

The goal of the Photon is to provide a simple standardized interface to completely validate an IMP.

Build

JDK requirements

Photon can be built using JDK-11.

Gradle

Photon can be built very easily by using the included Gradle wrapper. Having downloaded the sources, simply invoke the following commands inside the folder containing the sources:

Linux/macOS:

$ ./gradlew clean
$ ./gradlew build
$ ./gradlew getDependencies

Windows:

$ gradlew.bat clean
$ gradlew.bat build
$ gradlew.bat getDependencies

Note

getDependencies downloads all dependencies into the ./build/libs directory.

Binaries

Binaries and dependency information for Maven, Ivy, Gradle and others can be found at http://search.maven.org.

Change history and version numbers are available at CHANGELOG.md.

Example for Maven:

<dependency>
 <groupId>com.netflix.photon</groupId>
 <artifactId>Photon</artifactId>
 <version>5.0.0</version>
</dependency>

and for Ivy:

<dependency org="com.netflix.photon" name="Photon" rev="5.0.0" />

Documentation

Sample Applications

Multiple sample applications have been provided with this project (e.g., com.netflix.imflibrary.app.IMFTrackFileReader). Having obtained the dependencies, you can run an application as follows:

Linux/macOS:

java -cp "./build/libs/*:" <fully qualified class name> <arguments>

Example:

// Analyze an IMF Delivery locally
java -cp "./build/libs/*:" com.netflix.imflibrary.app.IMPAnalyzer local_folder_path
// Analyze an IMF Delivery in a S3 bucket
java -cp "./build/libs/*:" com.netflix.imflibrary.app.IMPAnalyzer s3://path/to/IMFDelivery/
// Analyze an individual IMF asset (e.g. AssetMap, PKL, CPL, MXF Track File)
java -cp "./build/libs/*:" com.netflix.imflibrary.app.IMPAnalyzer local_file_path

Windows:

java -cp build\libs\*; <fully qualified class name> <arguments>

Example:

// Analyze an IMF Delivery locally
java -cp build\libs\*; com.netflix.imflibrary.app.IMPAnalyzer IMP_folder_path

S3 Access

Photon supports S3 URIs through aws-java-nio-spi-for-s3. No Photon-specific setup is needed, instead the S3 CLI config and credentials are used directly (see here for instructions).

Example (Linux/macOS):

// Analyze an IMF Delivery in a S3 bucket
java -cp "./build/libs/*:" com.netflix.imflibrary.app.IMPAnalyzer s3://imf-plugfest-imf-plugfest/plugfest_2024_11/source_test_vectors/From_Colorfront/HTJ2K/plugest_FTR_C_EN-XX_US-NR_51_UHD_20241105_OV/

API and Developer Documentation

API documentation is available via Javadoc.

More information is available in the Wiki.

About

Photon is a Java implementation of the Interoperable Master Format (IMF) standard. IMF is a SMPTE standard whose core constraints are defined in the specification st2067-2:2013

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 27

Languages

AltStyle によって変換されたページ (->オリジナル) /