This is our in-house pipeline whenever we need Natron for compositing. Feel free to share your input. Thanks.
Files we get from departments:
For 3D :
- EXR MultiLayer (Half Float) or (Full Float if crytomatte is needed)
From matte department:
- PSD (Layered, effects/masks rasterized)
- TIFF (Layered, effects/masks rasterized)
- PNG
For backlot plates/mographs (comes from cam labs and editing department). Usually all files come from editing department after scheduled cuts. Compositors don’t deal with B-rolls:
- DPX sequence
- TIFF sequence
- Apple PRORES 4444
- PNG/QTRLE for Motion Graphics
- h264 Higest Profile / 4:4:4 Intra (rarely)
Converting video files into image sequence to use in Natron:
We convert all sort of video format file (MOV/MP4) into tiff 16 with ffmpeg.
ffmpeg -i 'filename.mov' -compression_algo lzw -pix_fmt rgb48le output%03d.tiff
NOTES for TIFF:
-
"-compression_algo raw or lzw or deflate"
- is optional. Using it for 4k/+ is recommended. For 4k/+ we usedeflate
. For HD we uselzw
to lower the file size.
Actually the TIFF compression is very fine in quality. -
"-pix_fmt rgb24 or rgba"
is must to convert the color space. YUV/YCRB is not ideal for many en/decoders for TIFF.
more info: ffmpeg -v error -h encoder=tiff
If tiff is an overkill, using png is okay too.
ffmpeg -i 'filename.mov' -pix_fmt rgb48be output%03d.png
more info: ffmpeg -v error -h encoder=png
more options:
PNG (with Alpha)
for 8 bit
ffmpeg -i input.mp4 -pix_fmt rgba output_%04d.png
for 16 bit
ffmpeg -i input.mp4 -pix_fmt rgba64be output_%04d.png
PNG (without Alpha)
for 8 bit
ffmpeg -i input.mp4 -pix_fmt rgb24 output_%04d.png
for 16 bit
ffmpeg -i input.mp4 -pix_fmt rgb48be output_%04d.png
TIFF (with Alpha)
for 8 bit
ffmpeg -i input.mp4 -compression_algo lzw -pix_fmt rgba output_%04d.tiff
for 16 bit
ffmpeg -i input.mp4 -compression_algo lzw -pix_fmt rgba64le output_%04d.tiff
TIFF (without Alpha)
for 8 bit
ffmpeg -i input.mp4 -compression_algo lzw -pix_fmt rgb24 output_%04d.tiff
for 16 bit
ffmpeg -i input.mp4 -compression_algo lzw -pix_fmt rgb48le output_%04d.tiff
There is one more option if you need to intact YUV colorspace:
ffmpeg -i "input.MXF" -compression_level 10 -pred mixed -pix_fmt rgb24 -sws_flags +accurate_rnd+full_chroma_int output_test%03d.png
ffmpeg -i "input.MXF" -compression_algo lzw -pix_fmt rgb24 -sws_flags +accurate_rnd+full_chroma_int output_test%03d.tiff
OUTPUT from Natron :
The write node is most of the time is TIFF. Depending on the project (image attached):
- output components can be RGB(no transparency) or RGBA(with transparency)
- Bit depth can be auto/8i/16i (Dont use float)
- compression can be none/lzw (HD). for 4k deflate is ok.
Creating Intermediate for editing servers:
We then send this TIFF sequence in zip to editing panel. Sometimes remote teams also get involved or we need to pack it in intermediates for editing server.
We use intermediate codec: PRORES 4444
for it.
It’s 12 bit with YUVA which retains alpha.
We can simply do it with ffmpeg or in kdenlive/shotcut importing the TIFF as sequence.
With ffmpeg:
ffmpeg -framerate 30 -i input%03d.tiff -f mov -acodec pcm_s16le -vcodec prores_ks -vprofile 4444 -vendor ap10 -pix_fmt yuva444p10le out.mov
With Shotcut/Kdenlive :
- Need to create a render profile first with below profile
f=mov acodec=pcm_s16le vcodec=prores_ks vprofile=4444 vendor=ap10 pix_fmt=yuva444p10le qscale=%quality
- Use TIFF image as sequence.
Then Render with this prores 4444 profile.
Tutorial:
Quite obviously it can be done with premiere/avid/fcpx etc as well by importing TIFF as sequence and render as prores 4444.
Alternative way with natron (Not recommended) see image:
in write node:
- use filename.mov
- container quicktime mov
- codec ap4h
- pixel YUV444
- bit depth 10
- alpha check (if any)
Broadcast render delivery with sound muxing:
Simply done in editing. Modern codec can be h264 (HD), H265(4k), mkv, Webm etc.
Also some remuxing options with Ffmpeg
Remuxing with audio re-encoding
ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac output.mp4
Remuxing without audio re-encoding. Make sure your movie container can accept the audio file format. MKV can take almost all audio format (ogg,flac,opus,wav,mp3)
ffmpeg -i video.mp4 -i audio.wav -c copy output.mkv