Y-Ken Studio

新しもの好きのデータエンジニアが四方山話をお届けします。

iMovie ’08 の謎な挙動(バグ?)とその対処方法

AppleiLife '08出しましたね〜 …去年の8月ですが(笑)
昨日、弊社が運営しているジョブセンスの企業側管理画面の動画ガイドを製作しました。

初めてiMovie '08に触ったのですが、それまで使っていたiMovie HD 6などに比べると使い方が大幅に変わっており、操作方法に慣れるまで時間が掛かりました。
何よりも、以下の謎な挙動にハマったのが何よりもの元凶です。

  1. アスペクト比が違う映像を入れると一部切り取られる。
  2. 動画を読み込むと大幅に画質が劣化する。
  3. 書き出しがいつまで経っても終わらない。
  4. トランジションの継続時間を入力しても無視される!?

その原因と解決方法を紹介します。

iMovie '08の「アスペクト比が違う映像を入れると一部切り取られる」問題

動画を読み込んだとき、イベントライブラリでは問題ないのですが、プロジェクトライブラリに入れると若干、動画のサイズが横長の為、両端が切り取られてしまいました。黒帯を出す形で全体を表示する設定はあるはず・・・と探してみると変な所にありました。


「ファイル」→「プロジェクトの情報...」という所で「最初のビデオの配置方法:切り取り」になっている所を「フレームに合わせる」にする事で設定可能です。
これで余白には自動的に黒い帯で覆われ、レターボックスの様な形ではめ込むことが出来ました。

iMovie '08の「動画を読み込むと大幅に画質が劣化する」問題

「ファイル」→「ムービーを読み込む...」として動画を取り込むと、なぜかジャギーだらけのぼやけた映像になってしまいます。
管理画面の解説ムービーなので文字が読めないとかなり厳しいです。その時はApple Intermediate Codecを使っていたのですが、これをPNGやPhoto JPEGJPEG2000AppleアニメーションにしてQuickTimeで書き出しておくと綺麗にインポート出来ました。しかし後述しますが、このように読み込み(インポート)出来たからと言って書き出しもうまくいくわけではないのです。

画質をほとんど下げることなくキレイに取り込みたいときはPhotoJPEGを使いましょう。

iMovie '08の「書き出しがいつまで経っても終わらない」問題

1本作り終わったので書き出してみようと「共有」→「QuickTimeを使用して書き出す...」を選んでH.264で書き出してみたのですが、残り時間が5分のまま一向にプログレスバーが進みません。iMovieがフリーズしたのかと思い一度落として圧縮なしでもう一度試しても駄目。30分ほど放置してみるも変わらず…。
物は試しと、「共有」→「ムービーを書き出す...」でエクスポートをしてみるも全く進みません。若干、喪失感に浸り始めました...

気を取り直してシステムの内部状態を探ってみます。
ユーティリティーの中にあるターミナル.appで「lsof | grep iMovie」とコマンドを打つと、保存先のディレクトリに「.QT-05a6-c3bfad73-bfffeb8c-00」というファイルが作られていることが分かりました。しかしこのファイル、ちょうど書き出しを実行したときに300KB程作成されてから更新日時もサイズも増えていません。データをバイナリエディタで開いてみると、最初の数コマだけ書き出した後止まっているようです。
/tmpなどに書き込んでいる可能性もあると思い、ユーティリティーの中にあるアクティビティモニタ.appでCPU使用率を見ると98%と頑張っているようですが、ディスクの読み書き状況の方は「毎秒データ書き込み:0バイト」との文字が。。どうやら、冒頭の動画のエンコードで止まっている様子です。
試しに新しいプロジェクトを作り適当な動画ファイルを入れ、最初10秒ほど同じような構成で作って書き出すと難なく出来ます。次に書き出しが止まった箇所に使われていた動画ファイルを追加して再度書き出しをすると・・・ちょうどその動画を変換するあたりで止まりました。ビンコ!!
正常にエンコード出来る動画と出来ない動画との違いを見ると、ムービーの尺以外にコーデックが異なっていました。デスクトップのキャプチャ映像で文字が読めなくなることを避けるために、書き出し時に使ったコーデックが悪さをしていたようです。これ、Apple アニメーションだったんですが、Photo JPEGの動画に差し替えると難なくプログレスバーが進み、書き出しが出来ました。

素材に、DV系以外のコーデックの動画を使うときは、Photo JPEGを使いましょう。

iMovie '08の「トランジションの継続時間入力しても無視される」問題

今回、最も悩んだ箇所と言えるかもしれません。トランジションの継続時間を変えようと、右クリックで「長さを調節...」と何度やっても駄目なのです。例えば秒数で2と入力してもなぜか0:08になったり、3と入力すると0:07になったりと全く挙動がつかめません。


何か問題があればアラートを出して欲しい物ですが、何も言われることなく、実際に入力した数値とは違う長さになっているのです。そのままで行こうかとも思いましたが、キューブやディゾルブのトランジションがやはり速すぎておかしいです。

プロジェクトの「プロジェクトの情報を見る...」からトランジションの継続時間を調節するも、一部はこれで長くなりましたが、相も変わらず短いところは極端に短いまま。

iMovieヘルプを参照しても記述はありません。ネット上を探しても「この画面がバグってる?」というコメント程度しか見つかりません。
ふと、インストールDVDにあったマニュアルを読んでみるとこんな記述が。

1つのクリップから次のクリップまでのトランジションの時間をトランジションの継続時間と呼びます。トランジションの継続時間は、その前後のクリップの継続時間の半分以上の長さにすることはできません。たとえば、4秒のクリップと6秒のクリップの間にトランジションを設定した場合、トランジションの継続時間は最大2秒となります。
デフォルトでは、プロジェクト内のすべてのトランジションの継続時間が0.5秒に設定されてい ます。トランジションの継続時間は、「プロジェクトの情報」ウインドウで変更できます。手順については、「iMovieヘルプ」でトランジションの持続時間に関するトピックを参照してください。
また、「iMovie」では、プロジェクト内のクリップ間のすべてに、同じトランジションを自動的に挿入することも可能です。詳細については、「iMovieヘルプ」でトランジションの自動追加に関するトピックを参照してください。

参照:iMovie '08 スタートアップガイド.pdf

なるほど。どうやら、前後のクリップの短い方の半分以下しか出来ないみたいですね。静止画的なフレームを前に置いていたことが原因でした。これで、一件落着です!

トランジションの前後には2秒以上のクリップを配置するようにしましょう。



それでは、友人の誕生日プレゼントを買いに、街に出て来ますー