#1: I got lucky because it is closeable, so I can use use. (which should close even if not fully consumed)
val frames = sequence<Frame> {
FFmpegFrameGrabber("input.mp4").use { grabber ->
grabber.start()
println("Total frames: ${grabber.lengthInVideoFrames}")
while (true) {
yield(grabber.grabImage() ?: break)
}
}
}