DV-HDR-merge

A script to batch combine HDR media with Dolby Vision media for a hybrid file that uses Dolby Vision but with fallback to HDR. The script has a built in frame compare tool that makes syncing the different files very easy. The script matches the files by comparing frame count because Dolby Vision RPU-files are based on frames, not on time.

Dependencies

The following dependencies must either be installed to PATH or added to a folder called bin in the main directory:

FFmpeg
quietvoid/dovi_tool
mkvmerge
mkvextract

Python requirements that needs to be installed: requirements.txt

Usage

DV_HDR_Merge.py [Input files/folders]

Optional commands: --help, -logL, -maxdif

DV_HDR_Merge.py -logL debug -maxdif 100 HDR_movie.mkv DV_movie.mp4 HDR_movie2.mkv DV_movie2.mkv ./DV_movie_folder ./HDR_movie_folder

Valid input formats:
HDR media: *.mkv
Dolby Vision media: *.mkv, *.mp4\

Can be customized to use *.mp4 as HDR input as well but Matroska is the superior container.

Output format: *.mkv

Explanations

Shift frames:
A negative amount means that frames will be removed in the beginning and a positive means that the first frame will be duplicated to add enough frame. Any excess frame on the end will be cut off

General:
If frame dimensions do not match the script will automagically correct for it.

Example of code running

Command Prompt running script

Frame Compare Tool

Application window

  1. Opens the active image in your default photo application for easier inspection
  2. Switches between a 50/50 blend of the two compared images or a grey-scale difference
  3. Set the frame to reference in the HDR media file, press Enter to apply. (Total amount of frames in media is shown in label)
  4. Set how may frames to shift Dolby Vision layer with, press Enter to apply.
  5. Closes window and sends inputted frame-shift to be used when combining the two media.
    (Closing the window will do the same as the Done button)

Always compare multiple reference frames in case of missing or extra frames in some of the materials used.

Example images

Both scenarios are using frame 30000 as the HDR reference frame.

Unsynced images

Blended 50/50 Difference
Synced Normal Synced Difference

No frame shift have been added and the result is blurry edges and sometimes even different scenes. The difference images shows a lot of anomalies when pixels don't cancel each other out.

Synced images

Blended 50/50 Difference
Synced Normal Synced Difference

When Dolby Vision layer is shifted with -3 frames in this cae, no blurry edges can be seen on the blend image and on the difference image no anomalies can be found. (Sometimes you can get a faded silhouette as in this case because the luminance levels could not be correctly matched when trying to tonemap the thumbnails taken from the media)

S
Description
A script to batch combine HDR media with Dolby Vision media for a hybrid file that uses Dolby Vision but with fallback to HDR
Readme MIT
31 MiB
Languages
Python 100%