Okay, I'm making a video heavy on special effects and each clip will probably be run through Blender at least four times. Once for de-interlacing and setting the frame rate to 30 (I might use HandBrake for that part) once for editing, once for special effects, and once for color correction and other compositing tricks. If I converted each of these clips to an PNG image sequence, the project would probably be a couple hundred Gigabytes. What video format retains the most quality for this sort of thing?
- Control the rendering of your codec to a lossless stills format to load into your pipeline. Do so only after having locked your picture edit.
- Save to EXR when you must save to a file format, and stay in EXR until your final grade. Even half float EXRs would be satisfactory.
- Conform to a display referred format such as JPEG or TIFF at the very end. DPX is the standard here, but is likely a more complex path for reasons that are too vast to list here.
- Encode from there.
If you ask a follow up question, I could give you a very standardized production pipe that might illuminate why this is advised.
Load properly deinterlaced, frame accurate footage into Blender
Here are a summary and some explanations of my workaround for using AVCHD files in Blender* which basically a) eliminates the need for a prior deinterlacing or fps change run and b) eliminates most frame decoding problems you get with the Blender-internally used ffmpeg library:
- AviSynth 220.127.116.11 (32 bit)
- The L-SMASH Works Plugin r729 for AviSynth
Make sure to extend your PATH-variable to its location!
(needs vcruntime140.dll which I found out via Dependency Walker)
- Pismo File Mount Audit Package version 1.7.1
Hint: since 1.7.4 they changed the position of where the file will be mounted to C:\Volumes instead of being replaced by a folder in its current location.
- AVFS - AviSynth Virtual File System 18.104.22.168
the newer one doesn't include the *.dll but only an executable
A small .AVS-Script to load the footage into AviSynth:
LoadPlugin("LSMASHSource.dll") LWLibavVideoSource("avchd_file.MTS") ChangeFPS(24)
Optionally I used as well:
- QTGMC 3.32 for best quality deinterlacing (
QTGMC(Preset="Slow")but that was a bit tricky to set up) and you could more easily use the included
Bob()instead. And I sometimes needed a
SelectEven()as well as I had some interlaced footage from a prior camera that was read in as doubled frames progressively.
This basically allows me to Quick mount my .AVS-file with Pismo FMAP. It then "disappears" and there is a virtual folder created at its place instead. Additionally during the mount process once an relatively small avchd_file.MTS.lwi index file is created next to my orifinal footage by L-SMASH. It includes all the frame details and some meta information about my AVCHD file so that the plugin can provide each and every single frame accurately and properly.
The new virtual folder should include three files:
- avchd_file.avi: the virtual avi file I can load into Blender (ignore its huge virtual size)
- avchd_file.avs: the original AVS script that disappeared
- error.log: some statistics about my video stream and hopefully no error message (except that the clip has no audio)
I then use the virtual .avi file in Blender and before I load in the original .mts file as well to get two strips (audio and video) where I only retain the audio strip and delete the video strip. But I only use these audio Strips for a cross correlation to match up my externally recorded and already Audacity-edited audio Wave file anyways. Combining Audio and Video through the AVS-Script would be possible as well via
AudioDub(...), but I didn't need it in the end.
When I want a fast playback for editing I have to use proxies though, but that's fine and usually I can play my footage at around 8-10fps in the vse which is enough for my purposes and cutting. But with this setup I get perfect accurate single frames provided by the great L-SMASH plugin from my footage that I can use in the VSE much better than the mostly stuttering or duplicated or even artifacted ones that the internally used ffmpeg library provides.
ChangeFPS can of course be adjusted in its frame rate or if needed be replaced by a
ConvertFPS for including frame blending.
* My Setup was inspired by yellow, but unfortunately his blog is offline, I had to use the web archive to find out some details. There are attempts to enable AviSynth support in the internally used ffmpeg library, but these would require a fresh compile or a difficult version matching. It would be awesome if this could be enabled by default in Blender, but for now one has to use this workaround with mounting this script and using the resulting virtual .avi file.
Eliminate multiple runs through Blender
Take some inspiration from Can I add the output of the VSE as input to the node diagram?. That and the following hints should help omitting the extra special effects run.
Nested scene strip support (like metas)
This makes it possible to use scenes as a kind of multi-user meta-strip (with their own time), (485ea43).
Since this release you can also use Strip Modifiers that you can append-copy to other strips. Or use Adjustment Layer Effect Strips to adjust all underlying Strips at once.
Please give a hint of what could be improved before downvoting and expressing: "This answer is not useful".