目的
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以外の指定はソースを読む限りは例外が飛んでくるはず