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.
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.
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
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)
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
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)
}
}
}