# orx-video-profiles A collection of `VideoWriterProfile` implementations that can be used with `ScreenRecorder` and `VideoWriter` ## Usage ### GIF ``` import org.openrndr.application import org.openrndr.color.ColorRGBa import org.openrndr.extra.videoprofiles.* import org.openrndr.ffmpeg.ScreenRecorder fun main() = application { program { extend(ScreenRecorder()) { gif() } extend { drawer.clear(ColorRGBa.GREEN) } } } ``` Later use `gifsicle` or similar to further reduce file size. For example: ``` $ gifsicle --loop --delay=4 --colors 16 --optimize=2 heavy.gif >lessheavy.gif ``` More about [gifsicle](http://www.lcdf.org/gifsicle/). ### PNG sequence This profile requires specifying a file name: `outputFile = "frame-%05d.png"`, where `%05d` means "zero-padded five-digit frame number". The frame number format is not optional. ```kotlin import org.openrndr.application import org.openrndr.color.ColorRGBa import org.openrndr.extra.videoprofiles.* import org.openrndr.ffmpeg.ScreenRecorder fun main() = application { program { extend(ScreenRecorder()) { pngSequence() outputFile = "frame-%05d.png" } extend { drawer.clear(ColorRGBa.GREEN) } } } ``` ### Animated Webp ```kotlin import org.openrndr.application import org.openrndr.color.ColorRGBa import org.openrndr.extra.videoprofiles.* import org.openrndr.ffmpeg.ScreenRecorder fun main() = application { program { extend(ScreenRecorder()) { webp() } extend { drawer.clear(ColorRGBa.GREEN) } } } ``` ### Prores (large file, high quality video) ```kotlin import org.openrndr.application import org.openrndr.color.ColorRGBa import org.openrndr.extra.videoprofiles.* import org.openrndr.ffmpeg.ScreenRecorder fun main() = application { program { extend(ScreenRecorder()) { prores { profile = ProresProfile.Profile.HQ4444 } } extend { drawer.clear(ColorRGBa.GREEN) } } } ``` ### H265 ```kotlin import org.openrndr.application import org.openrndr.color.ColorRGBa import org.openrndr.extra.videoprofiles.* import org.openrndr.ffmpeg.ScreenRecorder fun main() = application { program { extend(ScreenRecorder()) { h265 { constantRateFactor(23) } } extend { drawer.clear(ColorRGBa.GREEN) } } } ```