jcodecでお手軽にbitmapをmp4にする

目的

BufferdImageに展開されたBitmapをコンテナに追加してmp4動画を作成する

背景

連番PNGや画面キャプチャしたBitmapを動画に変換したい

環境

言語: Kotolin
エンコード形式:H264
フレームレート:30FPS
解像度:VGA

解決策

SequenceEncoderを使えば簡単でした
メモリ上のBitmapから生成する場合でもBufferedImageのラスタのByteArrayに突っ込んでやるなりしてBufferedImageを作ればそのままいけるはず

val tDestinationFile = File("destination.mp4")
val tEncoder = SequenceEncoder.create30Fps(tDestinationFile)

//とりあえず30枚(1秒)分を生成する
for(i in 0..30) {
    val tCurrentImage = ImageIO.read(new File(String.format("%d.png",i))
    val tPicture = AWTUtil.fromBufferedImage(tCurrentImage, ColorSpace.RGB)
    tEncoder.encodeNativeFrame(tPicture)
}

tEncoder.finish()

課題

例外処理をちゃんとやらないとダメですが今回はちょっとしたテスト用なのでいい加減です
実際に使う場合は考慮しないとダメです
あとH264だとColorSpace.RGB以外の指定はソースを読む限りは例外が飛んでくるはず