製作を効率化するためにソフトウェアを作る

トップ画像

まえがき

撮影した映像はできればその場ですべて確認し、確実に必要としている映像が撮影できていることを確認しつつ撮影を進めていきたいものですが、作業量が大きく関係者が皆、品質のために全力を尽くしている現場では、なかなかそのために必要な力を供給することができません。しかし、小さくて簡単なソフトウェアを作ることで、作業を効率化し、確認作業をしやすくすることができます。

この記事では、まず簡単なソフトウェアによって効率化できる作業やその効果などを示します。続いて、マルチカム撮影した映像の必要な部分を比較的少ない労力で一時に確認するためのソフトウェアのソースコードを通じて、映像を扱うソフトウェアを実装するにあたって特に注意する点について解説します。

簡単なソフトウェア

映画製作を効率的に行うためのソフトウェア、ときくと、とても大規模か、あるいは極めて高度なソフトウェアを想像します。しかし、特別に優れたプログラミング能力がなくても、それどころか、場合によってはまったくソースコードを書くことができなくても、自ら映画製作の効率をより高めるためのソフトウェアを実装することはできます。

例えば、撮影中、大事な映像を守るために予備の記憶装置に複製する、ということはよくあります。カメラや録画装置が記録できる記憶媒体の容量には限りがあるので、適宜より大容量の記憶装置に転送して、空き容量を確保するということも日常的に行われます。この作業には、映像という情報の性質上、大変記憶空間を消費するため作業に時間がかかる問題や、ちょっとした失策で大事な、そう簡単には回復できない情報を一瞬にして喪失する危険性があります。

映像を記録する記憶装置は、わたしたちの場合、正副予備の三系統を保有しているため、映像保全のための複製作業には大変な人的資源を奪われています。そしてこの作業は撮影中に逐次行われ、また行われなければならない性質のものです。

そこでわたしたちはこれを可能な限り自動化して簡単にするソフトウェアを実装しました。Pathfinderで投入された、今はもう喪失してしまったこのソフトウェアを使えば、誰もが数回のクリックで、三系統の記憶装置に、カメラから取り出した記憶媒体の映像を複製することができました。ついでに数回のクリックに続いて記録用紙に従って数値を入れれば、後の作業のためにデータを自動で整理することもできました。

このソフトウェアは、実際のところ単純な動きをするだけのソフトウェアなのでシェルスクリプトとAutomatorで実装されていました。つまり極めて基本的な自動化の技術を知っていれば簡単に実装できるということです。

さらにこのソフトウェアの利点は、誰でも作業を終えることができたことにありました。つまり、コンピュータや情報の保全に詳しい技師をこの作業ではなくより有意義な作業に充て、より汎用的な作業をこなす助監督にこの作業を担当してもらうことにより、全体としての効率を高めることができました。

これにくわえて三台のカメラでマルチカム撮影した映像をひとまとめにして同時進行で確認するための映像を作成するソフトウェア、Rushを実装し投入したことにより、11月29日クランクイン、11月30日クランクアップ、12月3日公開という強行日程を完遂することができたのです。

また、映像を加工するソフトウェアを実装することも、ある程度プログラミングについての知識と、いくつか気を配るべき点について気を配っていれば、簡単にできます。確実にいえるのは画像や映像処理についての知識や、その基礎となっている数学よりも、映像を扱う人間として暗に求めることをしっかりとソフトウェアに反映することの方が、ここで解説している種類のソフトウェアにとっては重要だということです。

マルチカム撮影で取得した映像を確認するためのソフトウェア

概要

マルチカム撮影は撮影における様々な利点を得るためにマルチカム撮影を行うにあるように、極めて強力な撮影技法の一つです。しかしいくつかの問題をはらんでいる手法でもあり、その問題の一つには確認が難しいという問題があります。特に、有意義な時間が極めて短い場合には、確認の際に無意味な時間を大量消費したり、確認作業に手間がかかることになります。例えば、俳優が短い時間しか写らないカメラがたくさんあるが、全体としての時間は長い、という場合です。

映像全体における有意義な部分が極端に短い映像の例
映像全体における有意義な部分が極端に短い映像の例

この場合、画像下部のタイムラインにおいて、一部だけ抜き出されている部分にのみ、人物が写っておりあとは背景の映像となっているため、確認の作業が大変非効率なものとなる可能性があります。

今回、例として実装ソフトウェアは、このようなマルチカム撮影における確認作業を簡単にするソフトウェアです。たくさんの映像ファイルと、二つのCSVファイルから、このソフトウェアは見るべき部分を繋いだ映像を簡単に作り出します。このソフトウェア、Rush2のソースコードは以下に記すGitレポジトリで公開されています。

FILMASSEMBLER / Rush2

妥協

このような目的で作るソフトウェアの実装において一番大切なことは、多くの部分を妥協することです。美しいインターフェイスやきめ細かいおもてなしの精神に溢れた出力は必要ではありません。できるだけ確認作業において無駄が省ければいいのであり、動きさえすれば構わなく、致命的な問題を起こさないのであれば、機能に対して理不尽な、例えばファイルの位置をある法則に揃えなければならないといった仕様も許容されます。ソフトウェアを開発することが目的でもなければ、プログラミング道を学んでいるわけでもないので、最低限必要な機能が、まったく泥臭い方法で実現されていても構いません。妥協して得られた時間は、映画自体の品質を高めることに注がれるべきであるという原則を忘れてはなりません。

環境

映像を編集するソフトウェアを作る場合、一番大事なのは、映像を取り扱う利便性の高いライブラリはあるか、ということです。特に問題になるのはコマ送りができるかという問題で、例えば映像操作用ライブラリとして著名なffmpegは極めてコマ送りが困難であり、これで映像を編集しようとすると、大変な苦労を要します。わたしたちの多くはOS Xを利用しているため、例として実装したソフトウェアはAV FoundationとCoreMediaによって映像を操作しています。

設計

効率を高めるためのソフトウェアというと、使いやすいGUIを備えていることが求められそうですが、これが間違っている場合もあります。まず、GUIを作ると、様々な作り込みに時間がかかります。これは大問題です。そこでRush2では二つのCSVファイルにすべてを託すことにしました。

第一のCSVファイル、camera.csvは、その名の通りそれぞれのカメラについて書かれたファイルです。

2013-03-21 05_19_21 (id).mov,00:00.0,camera0
KEN_3815.MOV,02:07.92,camera1
2013-03-21 05_21_13 (id).mov,02:15.75,camera2
            

第一列は、カメラが撮影した映像のファイル名、第二列は同期をとるための映像開始時間が基準時点からどれだけずれているかを示す時間表記、第三列は、下に示すmove.csvでカメラを識別するための名前となっています。

camera0,2:12.21,2:21.25
camera1,2:21.29,2:26.46
camera0,2:26.05,2:26.96
camera2,2:27.00,2:30.63
camera1,2:30.67,2:32.17
camera0,2:32.21,2:34.96

第一列はカメラの名前、第二列はカットの開始時間、第三列は終了時間です。つまり、これら二つのファイルは、出力される映像が、2013-03-21 05_19_21 (id).movの2分12秒あたりから2分21秒あたりまでの映像で始まる、ということを示しているわけです。ソフトウェアを実際に使うときは、余程のことがない限りカメラの録画の開始点のズレは0を設定しておいて、それぞれのカメラの撮影技師が「大体これぐらいの時間に写ってた」ということを申告すれば比較的に簡単に入力ファイルを作成できます。これは実装と運用の一つの妥協点です。

また、GUIを備えたソフトウェアというのは、基本的に人が使うことを想定しています。しかし、これではソフトウェアを他のソフトウェアから扱うことが困難になってしまいます。例えば、これはマルチカム撮影の確認のために取りあえず作りましたが、他の使い方をするかもしれません。サーバ上で稼働させたいかもしれません。そのようなときにCUIは大変便利です。また、GUIがどうしても必要ならば、CUIでできたソフトウェアを呼び出すGUIを作ってやればよいのです。

配慮

これは映像を扱うソフトウェアなので、比較的処理に時間がかかります。このとき、配慮の足りない作り方をすると、使う側としては大変な苦痛を覚えます。

最悪の展開は、いつ終わるともしれない動作が延々と続いて待たされた挙げ句、実はかなり前の段階で失敗していたことが明らかになり、映像の後方のみ完璧なものや、音ズレの激しい映像が出力され、やり直しになることです。

従って、まずはいつ終わるのかを大体でいいので示すためのプログレスバーなどを実装すべきです。また、実際の加工や出力に入る前にわかりそうな問題は調べておいて、エラーメッセージを表示するようにします。

実行例

Rush2を使って、簡単にマルチカム撮影した映像の確認用映像を作った例について解説します。このシーンでは、8台のカメラによって、階段を登って駆け抜ける人物の姿を撮影しています。

以下に、各カメラから撮影された映像のスクリーンショットを示します。

D4から撮影された映像
D4から撮影された映像
V1から撮影された映像
V1から撮影された映像
GX100から撮影された映像
GX100から撮影された映像
iPhoneから撮影された映像
iPhoneから撮影された映像
D7100から撮影された映像
D7100から撮影された映像
iPadから撮影された映像
iPadから撮影された映像
D7000から撮影された映像
D7000から撮影された映像
GALAXY Note IIから撮影された映像
GALAXY Note IIから撮影された映像

以下に、camera.csvを示します。

DSC_9537.mov,0:00.00,v1
2014-03-15 10_56_42 (id).mov,1:20.71,ipad
20140315_105641.mp4,1:23.66,galaxy
_DSC0002.mov,0:38.96,d7100
DSC_4187.mov,0:47.08,d7000
DSC_1111.mov,0:30.46,d4
R0010291.avi,0:08.83,gx100

以下に、move.csvを示します。

d4,1:39.75,1:48.66
gx100,1:41.79,1:44.14
v1,1:41.42,1:42.38
iphone,1:44.66,1:46.04
d7100,1:45.21,1:48.63
ipad,1:43.96,1:48.38
d7000,1:46.46,1:51.13
galaxy,1:50.13,1:50.79

以下に、出力された動画を示します。

1分以上撮影した映像が8ファイルあるにもかかわらず、有意義な部分を抜き出すだけで、確認は26秒で済みます。例では極めて厳密に時間を指定していますが、もう少し大まかな値にしても充分な効果が見込めるでしょう。

さらに、Rush2が簡易的に編集も実現できることを示すため、単純な確認用映像というよりも、すこし工夫したもう一つの例を示します。このような編集はGUIのある映像編集用ソフトウェアで行うべきかもしれませんが、簡易的な編集ができれば、この例のように一方向に向かうだけでなく、往復した場合にも、Rush2は簡単に確認用映像を作れるといえます。

以下に、move.csvを示します。

d4,01:40.71,1:42.04
v1,1:41.54,1:42.04
gx100,1:42.08,1:43.04
d4,1:42.08,1:44.38
pad,1:44.47,1:45.79
d7100,1:45.83,1:46.92
pad,1:46.96,1:47.42
d7000,1:47.46,1:50.25
galaxy,1:50.29,1:51.00

以下に、出力された映像を示します。

むすび

この記事ではまず、きわめて簡単なつくりのソフトウェアでも映画製作の効率を高めることができることを示し、次に、マルチカム撮影を効率化するソフトウェアを例に映像を取り扱うソフトウェアを実装するにあたって注意する点などについて示しました。