Final Cut Pro で動画を書き出そうとすると、何度試してもエラーが発生してしまう状況に陥ってしまいました。エラー画面はこんな感じです。
今回はこのエラーの解決策を備忘録として残しておきます。
エラーの原因
色々と試しながら調査してみたところ、エラーの原因は Mac のスペック不足にありました。
今回不具合を起こした環境は MacBook Air (M1、2020) で GPU 8 コア、メモリ 16 GB。このスペックの Mac には、4K・24p 動画 4 本、合計 9 本のクリップを重ねるタイムラインは荷が重すぎたようです。
本記事は解決法にのみ焦点を当てて進行します。ボクが直面した不具合の詳細は以下の記事にまとめています。
解決策
3 つの工程を経て解決します。
Step. 1: エラーを起こしているフレームを特定する
まずはタイムラインのどこでエラーが発生しているのか、原因を特定しましょう。ここで改めて冒頭のエラー画面を確認します。
フォントサイズが小さいほうのエラーメッセージに注目します。
「Error: RequestCVPixelBufferForFrame returned: 3 for absolute frame: 4109」とあります。要約すると、「4109 フレーム目が原因でエラーを起こしているよ」と書かれていることになります。
では実際に 4109 フレームとは、タイムラインのどこにあるのか確認していきましょう。
1. まずは Final Cut Pro の「メニュー」から [環境設定…] を開きます。
2. 「一般」タブにある「時間表示」のプルダウンを展開します。
3. プルダウンメニューから「フレーム」をクリックします。
4. 「時間表示」横のテキストが「フレーム」となっていれば設定は完了。[ × ] ボタンで「環境設定」ウィンドウを閉じます。
5. タイムライン上で [control] + [P] キーを押します。
6. エラーメッセージに表示されていたフレームの数値 (今回の例では 4019) をキーボードで打ち込み、[エンターキー] を押します。
7. 赤枠部分の表示が白字で入力した数値になっていれば成功。ここがエラーの原因箇所です。
今回の例でいくと、まさにタイムラインが急激に増えるタイミングに合わせて書き出しエラーが起こっていることがわかります。
前回の記事での状況分析結果も含めて、スペック不足によるエラーであることの特定ができました。
Step. 2: Final Cut Pro の「バックグラウンドレンダリング」機能を OFF にする
ここからは Mac にかける負荷を軽減する設定や対応をしていきます。まずは「バックグラウンドレンダリング」を OFF にします。
「バックグラウンドレンダリング」とは、編集画面のプレビュー再生をスムーズにしてくれる Final Curt Pro の機能のこと。プロジェクトの動画素材やオーディオ素材などの一時ファイルを作成します。
編集を快適にしてくれる機能ではあるものの、重たい編集データの場合、このバックグラウンドレンダリングが原因でマシンがサーマルスロットリングを起こしてしまい、Final Cut Pro がうんともすんとも言わなくなってしまう諸刃の剣です。
「バックグラウンドレンダリング」を OFF にすることによる弊害はほとんどありません。なぜならこの機能が ON でも OFF でも、体感の編集スピードはほとんど変わらないからです。
M1 環境においては、タイムラインが一本なら 4 K 素材であっても OFF にしていてもスムーズに編集できます。また、今回のようにタイムラインが 9 本になれば、機能をオンにしていても結局スムーズに動いてくれません。
「バックグランドレンダリング」を OFF にする方法は次のとおりです。
1. まずは Final Cut Pro の「メニュー」から [環境設定…] を開きます。
2. 「再生」タブを開き、「バックグラウンドレンダリング」のチェックボックスを OFF にします。
以上で「バックグラウンドレンダリング」機能の OFF 設定は完了です。
Step. 3: 重たいパートだけ個別に書き出す
タイムラインの数が増えれば増えるほど、書き出し時 Mac にかかる負荷は大きくなります。
今回の事例のように 9 本に及ぶ場合、メモリ 16 GB では Mac への負荷が許容量を超過してしまいました。
とはいえ動画の構成は変えたくないので、重たいパートは個別に書き出すことで大幅な負荷軽減を図ります。
やり方はシンプルで、次の 3 ステップで完了です。
- 書き出し失敗の原因になっている部分を抽出して、別プロジェクトで作り直す。
- タイトル (テキスト字幕) を PNG 画像として用意して、タイムライン数を圧縮する。
- 書き出す。
こうして別に書き出したデータを、元のプロジェクトファイルに埋め込みます。
最終のタイムラインはこんな感じになりました。
問題になっていた 9 本のタイムラインパートを、一本の動画ファイルに圧縮完了。
以上の手順で書き出しのエラーが解消でき、無事動画完成まで至りました。
この手順を踏むことで、当該部分は若干の画質低下を避けられません。それでも YouTube に掲載する分にはほとんど劣化は気になりません。結局アップロード時に YouTube 側で再圧縮されちゃいますからね。
こちらが今回の事例になった動画です。どうです、画質、そんなに気にならないでしょう?
共有 (書き出し) 失敗原因の可能性は他にも
Final Cut Pro での共有 (書き出し) 失敗エラーについて、Apple 公式のサポートページが存在します。
今回ボクの環境においてはこのサポートページの手順では解決できないイレギュラーなエラーでしたが、場合によってはここに記載されている手順で解決できる可能性もあります。
慣れない動画制作には未知のエラーはつきものです。必ず解決策は存在するはずなので、めげずに解決に向けて頑張りましょう。