コンテンツにスキップ

字幕を投げ込む

このページでは、テキストファイルの内容をDaVinci Resolveの字幕として投げ込む方法について解説します。

なお、字幕機能は便利ですが、DaVinci Resolveの字幕機能やScript APIには不完全な部分が残っているため、利用の際は注意が必要であることを先に申しておきます。

字幕の投げ込みを実行するには下記の条件が満たされている必要があります。

  • DunkAssistの『DaVinci Resolve接続状態』が『接続中』になっている。
  • DaVinci Resolveで編集中のプロジェクトにて、タイムラインが作成済み。
  • メディアプール内にtextビンが作成済み。

本ページ作成時点のDaVinci Resolve(ver_21.0.3)では、字幕クリップをメディアプールに保存するためにいくつかの手順を踏む必要があります。

ここでは字幕クリップを、DunkAssistのキーワードクリップとしてメディアプール内のtextビンに保存する手順を載せます。

  1. DaVinci Resolveのエディットページを開きます。

  2. トラックコントロールを右クリックして『字幕トラックを追加』を選択します。

    字幕トラックを追加
  3. 字幕トラックのタイムライン上を右クリックして『字幕を追加』を選択します。

    字幕を追加
  4. 『字幕1』のトラックコントロールを右クリックして『字幕の書き出し…』を選択し、表示されたダイアログにて任意の場所に保存します。

    字幕の書き出し
  5. メディアプールを右クリックして『字幕の読み込み…』を選択し、手順4にて保存したSRTファイルを開きます。

    字幕の読み込み
  6. メディアプールに追加された字幕クリップをtextビンへ移動し、対応させたいキーワードに合わせてリネームしてください。

    字幕のキーワードクリップ化

これにより、他のキーワードクリップと同様に、投げ込み時のマッチング対象となります。

テキストの投げ込み時に字幕のキーワードクリップとマッチングすると、DunkAssistはテキストファイルの内容から字幕を作成し、字幕トラックへ投げ込みます。

ただし、現在のDaVinci Resolve(ver_21.0.3)において字幕に関するScript APIが充実しているとは言い難く、投げ込みに関しても制限があります。

この項では字幕の投げ込み時の仕様や、注意点などを解説します。

字幕クリップは、常に字幕トラック1の0番領域へ投げ込まれます。ここでの字幕トラック1とは、トラック名ではなくタイムライン上で1番目にある字幕トラックのことです。

字幕トラック1の0番領域

キーワード設定の『テキストトラック』や、投げ込み設定の『テキストを投げ込むトラック番号』は字幕の投げ込み先には使われません。

字幕トラック1が存在しない場合は、『対象のトラック番号が存在しない場合は作成』が有効な場合に作成を試みます。無効の場合は字幕を投げ込みません。

DunkAssistには、DaVinci ResolveのScript APIにおける字幕関係のメソッドの不足を補うために、2種類の投げ込み形式が用意されています。

ここではそれぞれの投げ込み形式の特徴と、メリット・デメリットを記載します。

『投げ込み設定』の『字幕を再構成して投げ込む(実験機能)』が無効の場合、この投げ込み形式になります。

再構成が無効

この投げ込み形式では、新しい字幕クリップが既存字幕の末尾以降に投げ込まれます。

既存字幕の間にある再生ヘッド既存字幕の末尾に投げ込まれた状態

上記の画像のように、再生ヘッドが既存字幕より前にある場合は、既存字幕の末尾に新規字幕クリップが追加されます。
新規字幕が再生ヘッドの位置に投げ込まれるのは、再生ヘッドが既存字幕より後ろにある場合のみです。

現在のScript API(ver_21.0.3)では、字幕の投げ込みの際に詳細な設定を渡すことはできません。
そのため、Script APIに従った安全な投げ込みを行うと、既存字幕の後ろに新規字幕が追加されることになります。

新規字幕を既存字幕の前へと置きたい場合は、投げ込み後に手動で移動させてください。

再構成が有効

『投げ込み設定』の『字幕を再構成して投げ込む(実験機能)』が有効で、再生ヘッドが既存字幕より前にある場合は、新規字幕を再生ヘッドの位置へ配置するために、既存字幕との位置関係を計算します。

このとき、字幕トラック1にある字幕のうち、再生ヘッドより後に終了する全ての字幕を再構成の対象とし、削除と再配置を行います。

再生ヘッドが既存字幕より後ろにある場合や、既存字幕が存在しない場合は、この設定が有効でも通常の字幕投げ込みになります。

これにより、再生ヘッドが既存字幕の前に置かれている場合でも、その位置を基準とした投げ込みが可能になります。

既存字幕の間にある再生ヘッド既存字幕の間に投げ込まれた状態

ただし、この機能にはデメリットもあるので、利用の際はリスクを承知した上での実行をお願いします。

ここでは字幕を再構成する際に、どのような処理が行われているか流れを軽く紹介します。
かなり強引な処理を行っていることが伝わるかと存じます。

  1. 字幕トラック1の0番領域に設置されている、全ての字幕クリップの情報を取得

  2. 『1』で取得した情報と現在の再生ヘッド、または同時に投げ込んだ音声の位置をもとに、新規字幕クリップの設置場所を計算

  3. 『1』と『2』で得た情報をもとに、SRTファイルを作成

  4. 字幕トラック1の0番領域に設置されている、再生ヘッドより後に終了する全ての字幕クリップを削除

  5. 『3』で作成したSRTファイルをメディアプールへ読み込み、字幕クリップ化

  6. 『5』で作成された字幕クリップを字幕トラックに投げ込み

  7. 『5』で作成された字幕クリップとSRTファイルを削除

  8. 『1』で取得した情報をもとに、字幕クリップのリンク状態を復元

  9. 再生ヘッドを、新しく追加した字幕クリップの末尾へ移動
字幕の再構成によるデメリット
Section titled “字幕の再構成によるデメリット”
  • Script APIを何度も実行するため、大量の処理で履歴が埋め尽くされます。これによりUndoを用いて作業を戻すことが困難になります。
  • 既存の字幕クリップの数が多いと、計算とリンクの復元に時間がかかることがあります。
  • Script APIによる不具合のリスクが、他の投げ込みと比べて高くなります。

以上のデメリットを踏まえたうえで、利用の可否を決めてください。