背景
- サーバーや HPC, ラズパイなどで動かすアプリで, 計算途中の可視化結果などをぺろっと動画にしたい.
- ラズパイの場合は, ラズパイカメラに画像処理施したものを動画にしたいとか.
- 別に高度なエンコードはいらない
- 各種アーキテクチャ(SPIR-V とか)や, 制限された環境(コンパイラ, 実行環境, OS)でも動くのに対応しているのがよい
- C/C++ アプリに組み込んで使えるのががよい
- ffmpeg を外部プログラムで走らせるのもめんどい
基本 GIF or Motion JPEG な AVI がよさそうです.
gif
gif-h
で良さそうです!
GIF なので, 画像サイズ大きかったり長い動画つくるとファイルサイズ増えますので注意しましょう.
Motion JPEG + AVI
AVI に Motion JPEG(JPEG 連番)を格納する形式です.
だいたいの動画プレイヤーで見れるかと思います.
実装サンプルはこちら.
ライセンスが無いので, 気になる方は自前で AVI 出力部分を再実装しましょう.
jpeg エンコードは stb_image_write https://github.com/nothings/stb や turbojpeg あたりでよいでしょう.
TODO
- webm を試す. https://github.com/webmproject/libvpx
-
x86 だとアセンブラを要求しつらい
- gif でうまくデータサイズ減らす(画質を落とす)のを試す.
- HEIF を試す?(パテントやライセンス周りが気になる)