ORI Video Encoding Guidelines.

This project is from the ASWF Open Review Initiative. It attempts to establish best practices for encoding Video media for VFX/Animation media review. We aim to explain what various parameters do, and in what situations you might want to choose to modify them.

This is not the site for general encoding, although you may find answers here, we will likely opt for a simple one-size fits all solution over file-size efficiency. We welcome suggestions and improvements.

The main confluence page for this for now is here

We recommend usage of VP9 and AV1 over h264 and h265 where possible to encourage the usage of patent-free codecs, for more information on this see the white-paper Next-gen codecs for VFX Community.

Why is this needed.

There are a lot of excellent guides out there. But few addressing the needs of the VFX community.

An example of why this is important is to compare:

Original PNG Image
Default ffmpeg conversion NOTE color shift compared to original
Using the libavscale library Should match original

You can see the default ffmpeg conversion introduces a dramatic color shift that if you use the right flags, you can match the original. See Color space conversion for more details on this.

  1. Acknowledgements
  2. Encoding Cheat Sheet
  3. Encoding Overview
  4. Color space conversion
  5. Media Encoding with ffmpeg
    1. Frame sequence specification
    2. RGB to YCrCb Conversion
    3. TV vs. Full range.
    4. RGB encode
    5. Useful Ffmpeg Filters.
    6. HDR Encoding
    7. Adding Timecode and Editorial Workflow
  6. Codec Comparsions
    1. h264
    2. Prores
    3. AV1
    4. HEVC/H.265
    5. MJPEG
    6. VP8
    7. VP9
    8. DNxHD
  7. Metadata NCLC/NCLX
    1. Gamut - colorprimaries
    2. Color Range
  8. Web Review

Acknowledgements

This document is a result of feedback from many people, in particular I would like to thank Kevin Wheatley, Trevor Aylward, Mark Reid, Gates Roberg Clark, Rick Sayre, Wendy Heffner and J Schulte for their time and patience.  

Status

This document and project is still a work in progress. We are working on building a more complete testing framework, so that it is easy to confirm that changes to ffmpeg are not breaking existing functionality.

Authors

This document is primarily the work of Sam Richards. The test suite was developed by Daniel Flehner Heen.

Feedback and error reporting.

We welcome feedback on this document, please report any errors or suggestions to the github issues page.


Copyright © 2022 ORI Contributors. Distributed under a CC BY 4.0 license.