[shotlist コラム] shotlistで使われているOSSについて
shotlistでは多種多様な静止画/動画を読み込むためにオープンソースソフトウェア(OSS)を積極的に活用しています。
なおshotlist自体のコードもOSSです。こちらをご覧ください。
静止画:OpenImageIO
Sony Pictures ImageworksのLarry Gritz博士がメインで開発している主に静止画をターゲットにした総合画像ライブラリです。
CG/VFX界隈特有の特殊なファイルへの対応はもちろん、ドキュメントがとても充実しています。(正直全体の機能の1割も理解できていません)
静止画を読み込むOSSライブラリとしてはImageMagickも有名ですが、あちらはWebなどに向けて作られているので、CG/VFX向けのフォーマット対応が乏しく、shotlistには使えませんでした。
なお、OpenImageIOにも後述のffmpegサポートは入っていますが、誰も使ってないせいかMPEGのようなフレーム間予測で補完するようなタイプの動画のことが考慮されてないなど、実用に耐えられるAPI群には現状ではなっていません。おそらくですが、今後も誰も拡張しないと思います笑
動画:ffmpeg
いわずと知れた世界最大で最強のOSS動画ライブラリです。
libAVとの分裂騒動などもあったようですが、いわゆる本家の方です。
shotlistでは4.0.xを使用していますが、今後もffmpegのVUPに合わせてライブラリを入れ替えていこうと思っています。
もともとのAPIはCしかありませんが、Pythonから扱うために後述のPyAVを経由して使っています。直接ffmpegのAPIを使うことはしていないということです。直接扱っていたらshotlistは一生完成しなかったでしょう:)
ffmpeg Pythonバインディング:PyAV
カナダ在住のフリーランスCG/VFX R&DのMike Boers氏がメインで開発している、ffmpegをPythonから簡単に使うためのライブラリです。
ffmpegのPythonバインディングは小さなものは色々ありますが、
実用レベルに達してるのはPyAVだけだと思います。
(他にいいのあったら教えてください)
ドキュメントはありますが、手探りで触っていかざるをえないことも多くちょっと大変ではあります。理解するポイントはExampleをじっくり眺めることだと思います。
連番認識ライブラリ:Pyseq
ルーカスフィルムのRyan Galloway氏が開発した、連番ファイルをSequenceというクラスにして簡単に扱えるようにするライブラリです。
shotlistではdpx,tiff,jpeg連番の認識や表示に活躍しています。
インハウスでなにか便利なもの作ろうかなーと思ったときに何かの参考になれば幸いです。
written by sawatsu