nokiatech / omaf

Nokia OMAF implementation
Other
61 stars 18 forks source link

Build Status

Omnidirectional MediA Format (OMAF)

OMAF is a systems standard developed by the Moving Picture Experts Group (MPEG) for enabling standardized omnidirectional media applications, focusing on 360 video, images and audio. OMAF Creator/Player Engine is an implementation of OMAF standard in order to demonstrate its powerful features and capabilities, and to help achieving interoperability between OMAF implementations.

News:

12-Oct-2021: Version 2.2.0 released! Main changes include:

16-Jan-2019: Version 2.1.0 released! Main changes include:

11-Oct-2018: Version 2.0.0 released! Main changes include:

Features:

Nokia OMAF Creator/Player implements a subset of current OMAF version 2 standard, including the following main features:

Multiple viewpoints

Overlays

Convert 360-degree HEVC videos in equirectangular projection stored in conventional mp4 files to OMAF HEVC viewport independent profile files or DASH streams.

Create 360-degree OMAF HEVC Viewport Dependent profile DASH streams, from HEVC files that have HEVC tiles.

Create 360-degree OMAF Still Image profile files, from HEVC files.

Playback OMAF HEVC Viewport-Independent and Viewport Dependent files and DASH streams (a sample application for Windows provided)

Playback OMAF Still Image files (a sample application for Windows provided)

All the components compile and run on Windows 10. OMAF Player requires in practice an HW accelerated HEVC decoder on Windows, available e.g. with NVidia 10xx display cards. With Direct3D, it is set as 6k@60 fps, which is ~8k@33 fps. OMAF Creator can be compiled and run on Windows 10 and Linux.

Contents of the Repository:

This repository contains the following items:

In addition, a LibDASH fork is provided in a separate repository: LibDASH, and OMAF branch of the HEIF repository heif is utilized as well.

Supported operating systems

OMAF Player

OMAF Creator

Building source:

Cmake-based build scripts are provided. A CMake installation is required, version 3.8 or newer recommended

First clone the LibDASH to the root of your work area. Then clone the OMAF branch of HEIF to the root of your work area. And finally clone this OMAF repository to the same place, i.e. root of your work area, so that the three cloned repositories are adjacent to each other. For example:

`mkdir omaf-build`
`cd omaf-build`
`git clone https://github.com/nokia/libdash`
`git clone --single-branch -b OMAF https://github.com/nokiatech/heif.git`
`git clone https://github.com/nokiatech/omaf.git`

Go to OMAF/Build and execute build-visualstudio.bat or some other build script depending on your platform. It will echo the detailed usage allowing to select which parts to compile.

The Creator binary should appear in /Creator/bin/{OS}/{Debug/Release}/

The Player libraries should appear in /Player/Lib/{OS}/{Debug/Release}/ The Player sample application Visual Studio solution can be opened in \Player\VideoPlayback\Windows\Monitor_Sample.

The player supports by default both Direct3D and OpenGL on Windows. The sample player application from release 2.1 onwards supports D3D, so OpenGL support is not necessarily required. If the OMAF Player is compiled with OpenGL enabled, OpenGL extension headers need to be downloaded and placed under OpenGLExt directory, see Khronos Note that with OpenGL, the max playback rate is restricted to 4k@30 fps.

Usage:

Convert a mono 360 mp4 to OMAF mp4:

omafvi.exe -i file.mp4 -o omaf.mp4

See the Wiki for other viewport independent conversion cases: https://github.com/nokiatech/omaf/wiki/Usage-instructions-for-OMAF-Creator

Create a Viewport dependent profile DASH stream:

omafvd.exe config.json

See the Wiki for explanation of the json configuration for viewport dependent stream generation: https://github.com/nokiatech/omaf/wiki/Usage-instructor-for-OMAF-Creator---Viewport-dependent-mode

Create OMAF Still image profile heic files:

omafimage.exe -s image.265 -o image.heic

See the Wiki for more detailed explanation of OMAF Still Image creation: https://github.com/nokiatech/omaf/wiki/Usage-instructions-for-OMAF-Creator-Still-Image-file-creation

Playback an OMAF file / DASH stream on Windows

\Player\VideoPlayback\Windows\Monitor_Sample\x64\Release\Monitor_sample.exe
The application shows a list of available .mp4, .heic, and .uri files from the directory where the binaries are, or when run on debugger, from \Player\VideoPlayback\Windows\Monitor_Sample. .uri files are text files with .uri extension, used for specifying DASH stream URL, i.e. the location of the MPD, e.g. http://myserver.com/omaf/video.mpd
You can also specify the input name as a command line argument, e.g. Monitor_sample.exe storage://video.mp4 or Monitor_sample.exe http://myserver.com/omaf/video.mpd

License:

Please see LICENSE.TXT file for the terms of use of the contents of this repository.

For more information, please contact: omaf@nokia.com

Copyright (c) 2018-2021 Nokia Corporation and/or its subsidiary(-ies).

All rights reserved.