tl:dr;おそらく可能でしょう。あなたがプログラマであれば簡単かもしれません。
エンコードされた情報は単なるステレオアナログペアなので、「これはDPL2ファイルです」という独自のメタデータを特別に保存しない限り、Dolby Pro Logic II(DPL2)信号を検出する保証はありません。しかし、あなたはおそらくかなり良い推測をすることができます。
DPL2を含む古いアナログドルビーサラウンドフォーマットはすべて、サラウンドまたはサラウンドの位相を反転して元の左右のチャンネルにミキシングすることで、サラウンド情報を2つのチャンネルに保存します。 DPL2を含むドルビーサラウンドタイプのデコーダは、2つのチャンネルの1つの位相を反転させ、次にこれらの信号ペアの類似性を探して、この情報を回復しようとします。これは、Dolby Surroundの場合と同様にして行われます。そうしないと、DPL2のように、これらの類似点が人工的に偏って左右または左右にずっと押し込まれます。
したがって、重要なデータがサラウンドチャンネルに保存されているかどうかを検出することが重要です。私はあなたのために働くかもしれない方法をスケッチして、コードを書かずに表現しようとしますが、あなたが好きなように実装して洗練するのはあなた次第です。
- 最初のN秒間のプログラムコンテンツをステレオファイルに切り取ります(Nは1〜30です)。このファイルをInputと呼んでください。
- 入力ステレオチャンネルをチャンネルごとに-3dBで新しいモノファイルにミックスダウンします。このファイルをCenterと呼んでください。
- Inputの左右のチャンネルを別々のファイルに分割します。これらを左と右と呼ぶ。
- 右チャネルを反転します。このファイルをRightInvertと呼んでください。
- 左チャンネルと右チャンネルをチャンネルごとに-3dBで新しいモノラルファイルにミックスダウンします。このファイルをサラウンドと呼んでください。
- サラウンドファイルのRMSとピークdBを決定します。
- サラウンドファイルのRMSまたはピークDBが「許容値」以下の場合は停止します。元のファイルはモノラルまたはセンターパンされているため、サラウンド情報は含まれていません。これらの公差が何であるかを見るには、DPL2とDPL2以外のいくつかのソースを試してみる必要があります。私は約-30dB程度を推測しています。
- センターファイルを新しいファイルに反転します。このファイルをCenterInvertと呼んでください。
- CenterInvertファイルを0dBでサラウンドファイルにミックスします(CenterInvertとSurroundは両方ともモノラルでなければなりません)。この新しいファイルSurroundInvertを呼び出します。
- SurroundInvertファイルのRMSとピークdBを決定します。
- SurroundInvertのRMSまたはピークdBのいずれかが「許容値」を下回っている場合は、停止します。元のソースには、サラウンド情報ではなく、左右のパン情報が含まれています。これらの公差が何であるかを見るためには、DPL2とDPL2以外のいくつかのソースを試してみる必要がありますが、数十程度のファイル数の後には数字が明確になるはずです。
- これまでのところ、オリジナルの入力にはサラウンド情報が含まれている可能性があり、おそらくドルビーサラウンドエンコーディングファミリのメンバーです。
soxの特定のコマンドでこれらの手順を実行できるように、このアルゴリズムを作成しました。あなたが好きなら、soxでRMS /ピーク値のステップを実行する代わりに、ebur128プログラムを実行し、LUFSのレベルを公差と照合することができます。サラウンドとセンターファイルを作成した後でも、実際のDPL2デコーダーのように、7kHz以上のすべての周波数をフィルタリングしてデエンファシスすることができます。
このアルゴリズムを単純にするために、私は振幅領域で完全にスケッチしました。 FFTビンの大きさと角度を計算する方法を知っていて、30〜100 msのウィンドウを使用する場合、SurroundLevelファイルの計算はおそらく周波数領域でより正確に行われます。しかし、この安価なバージョンは、あなたを始めなければなりません。
最後に1つ注意してください。 AACは現代の心理音響コーデックであり、圧縮を達成するためにステレオフェージングとイメージングでゲームをすることが好きです。そこで私は、DPL2をAACストリームにカプセル化するという単なる行為が、DPL2に存在するイメージングの一部をホースする可能性が高いと考えています。無理なく、DPL2もAACもこのパイプラインのどこにも属していません。もともとDPL2でエンコードされたアナログストリームを保存する必要がある場合は、AACではなくWAVやFLACのようなロスレスフォーマットで行います。
この記事の執筆時点で、Dolby Pro Logic(I)の背後にある運用コンセプトはhereです。これらの基本的な概念はDPL2にも適用されます。 DPL2の運用コンセプトはhereです。
_ "私は、例えばHandbrakeでメディアファイルをエンコードしています" _小さなサンプルファイルを取得しました(秒は2時間ではありません)?出力ファイルのバイトに記述されている場合は、そのような情報を取得する方法をアドバイスすることができます –