2017-04-13 9 views
3

AACでエンコードされたオーディオトラックがDolby Pro Logic IIデータでエンコードされているかどうかを判断する方法があるかどうかを確認しようとしています。この情報を見ることができるようにファイルを調べる方法はありますか?私は、例えば(オーディオオプションに切り捨て)-E av_aac -B 320 --mixdown dpl2とハンドブレーキにメディアファイルをエンコードしており、これは、オーディオトラックの出力であるmediainfoショー:オーディオトラックがDolby Pro Logic IIミックスダウンであるかどうかを判断する方法

Audio #1 
ID          : 2 
Format         : AAC 
Format/Info        : Advanced Audio Codec 
Format profile       : LC 
Codec ID         : 40 
Duration         : 2h 5mn 
Bit rate mode       : Variable 
Bit rate         : 321 Kbps 
Channel(s)        : 2 channels 
Channel positions      : Front: L R 
Sampling rate       : 48.0 KHz 
Compression mode       : Lossy 
Stream size        : 288 MiB (3%) 
Title         : Stereo/Stereo 
Language         : English 
Encoded date        : UTC 2017-04-11 22:21:41 
Tagged date        : UTC 2017-04-11 22:21:41 

それだろう、この出力には何があるのならば、私が言うことができませんDPL2データでエンコードされていることを示します。

+0

_ "私は、例えばHandbrakeでメディアファイルをエンコードしています" _小さなサンプルファイルを取得しました(秒は2時間ではありません)?出力ファイルのバイトに記述されている場合は、そのような情報を取得する方法をアドバイスすることができます –

答えて

3

tl:dr;おそらく可能でしょう。あなたがプログラマであれば簡単かもしれません。

エンコードされた情報は単なるステレオアナログペアなので、「これはDPL2ファイルです」という独自のメタデータを特別に保存しない限り、Dolby Pro Logic II(DPL2)信号を検出する保証はありません。しかし、あなたはおそらくかなり良い推測をすることができます。

DPL2を含む古いアナログドルビーサラウンドフォーマットはすべて、サラウンドまたはサラウンドの位相を反転して元の左右のチャンネルにミキシングすることで、サラウンド情報を2つのチャンネルに保存します。 DPL2を含むドルビーサラウンドタイプのデコーダは、2つのチャンネルの1つの位相を反転させ、次にこれらの信号ペアの類似性を探して、この情報を回復しようとします。これは、Dolby Surroundの場合と同様にして行われます。そうしないと、DPL2のように、これらの類似点が人工的に偏って左右または左右にずっと押し込まれます。

したがって、重要なデータがサラウンドチャンネルに保存されているかどうかを検出することが重要です。私はあなたのために働くかもしれない方法をスケッチして、コードを書かずに表現しようとしますが、あなたが好きなように実装して洗練するのはあなた次第です。

  1. 最初のN秒間のプログラムコンテンツをステレオファイルに切り取ります(Nは1〜30です)。このファイルをInputと呼んでください。
  2. 入力ステレオチャンネルをチャンネルごとに-3dBで新しいモノファイルにミックスダウンします。このファイルをCenterと呼んでください。
  3. Inputの左右のチャンネルを別々のファイルに分割します。これらを左と右と呼ぶ。
  4. 右チャネルを反転します。このファイルをRightInvertと呼んでください。
  5. 左チャンネルと右チャンネルをチャンネルごとに-3dBで新しいモノラルファイルにミックスダウンします。このファイルをサラウンドと呼んでください。
  6. サラウンドファイルのRMSとピークdBを決定します。
  7. サラウンドファイルのRMSまたはピークDBが「許容値」以下の場合は停止します。元のファイルはモノラルまたはセンターパンされているため、サラウンド情報は含まれていません。これらの公差が何であるかを見るには、DPL2とDPL2以外のいくつかのソースを試してみる必要があります。私は約-30dB程度を推測しています。
  8. センターファイルを新しいファイルに反転します。このファイルをCenterInvertと呼んでください。
  9. CenterInvertファイルを0dBでサラウンドファイルにミックスします(CenterInvertとSurroundは両方ともモノラルでなければなりません)。この新しいファイルSurroundInvertを呼び出します。
  10. SurroundInvertファイルのRMSとピークdBを決定します。
  11. SurroundInvertのRMSまたはピークdBのいずれかが「許容値」を下回っている場合は、停止します。元のソースには、サラウンド情報ではなく、左右のパン情報が含まれています。これらの公差が何であるかを見るためには、DPL2とDPL2以外のいくつかのソースを試してみる必要がありますが、数十程度のファイル数の後には数字が明確になるはずです。
  12. これまでのところ、オリジナルの入力にはサラウンド情報が含まれている可能性があり、おそらくドルビーサラウンドエンコーディングファミリのメンバーです。

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です。

+0

+1私から、このメソッドは多くの偽陽性をもたらすだろうが。たとえば、間違って配置されたマイクを使って録音から位相反転を得ることができます。常に起こります。 – Dalen

+0

ダーレンは、嘘つきのレコーディングはフェーズインバージョンを持つことができますが、悪い音楽の治療法はありません。位相反転も「常に起こる」ことはありません。 – johnwbyrd

+0

いいえ?ステレオの広がりを伴うエコー効果が出血するとどうなりますか?ああ、単純なエコーでさえ、長い音符の場合は、反転信号のように見えることがあります。実際に位相反転を使用する合成物は何ですか?シンプルなMSが完了したらどうなりますか?フェーズボコーダが時間伸張やピッチ変更に使用されている場合、または実際に大きな重なりを使用するフィルタが使用されている場合ウィンドウの端には常に反転する可能性があります。もともと右前にはなかったと言うことができるようにするためには、常にそれを避けることはできません。だから、右のスピーカーに戻るべきです。 – Dalen

2

ファイルに複数のチャンネルがある場合は、それらが複数のトラックに過ぎないものの、サラウンド目的で使用されていると確信できます。 この場合、それは「思考した」チャンネルの再生システムに適しています。 (もしファイルヘッダが何をするべきかを言わないならば)

あなたのファイルはステレオです。バーチャルサラウンドファイルかどうかを知りたければ、エンコーダフィールドのヘッダを見て、どのエンコーダが使用されているかを確認します。 これは多少ではありませんが、やや役立ちます。エンコーダのほとんどのフィールドは空のままであり、もう1つはエンコーダがサラウンドデータをミックスダウンしたレコーダーと同じである必要はないということです。 I.最初に生のPCMデータを作成し、それをあるエンコーダに供給して圧縮ファイルを生成します。 (AACなど) また、多くのアプリケーションとバージョンが存在するため、エンコーダフィールドも異なる可能性があります。そのため、すべてを追跡するのは面倒な作業になります。

しかし、60%以上の確実性で、データを調べることで何かが仮想サラウンドであるかどうかを推論することができます。 これは高度なDSPであり、高速化のためには機械学習さえも関与することがあります。 ステレオ信号にHRTF(ヘッド関連伝達関数)の特定の機能が含まれているかどうかを調べる必要があります。 これは、時間領域で現れる同じ音と周波数領域で高調波特徴(特性周波数変化)との間の強度差および遅延特性を調べることによって達成することができる。 両方を行う必要があります。なぜなら、まったく別のものがないと、何かが非常に良いステレオ録音であり、バーチャルサラウンドではないということだけかもしれないからです。 HRTF特有の機能が既にどこかにマッピングされているかどうか、またはあなた自身でそれを行う必要があるかどうかはわかりません。

これは、適切に行うために時間がかかる非常に複雑な解決方法です。また、パフォーマンスが問題になることもあります。

この方法では、ほぼオリジナルのサラウンドチャンネルにステレオミックスダウンを解除することもできます。 しかし、ステレオからサラウンドへの変換では、他の方法が使用され、音がよく聞こえます。

もしあなたがこのような検出を行うと決められたら、HRTF機能がマッピングされていない場合は半年以上の努力を捧げ、そうであれば数週間、 大きなストレスのために身を支えてください。私は似たようなことをしました。それはキラーです。

ヘッダーがエンコーダフィールドを提供し、エンコーダが独特で、サラウンドからステレオへの変換にのみ使用されることがわかっていない限り、あなたの質問に対する答えはノーとなります。 私が記述したように誰も実際のデータからこれをやったとは思わないか、そうした場合、それは商品の一部です。あなたがしたいことをすることは、通常は必要ではありませんが、それを行うことができます。

おかげさまで、HRTF逆転をグーグルで試してみてください。

+0

1つ、Dolby PL2にはヘッダがありません。 Dolby PL2は可能な限り広い意味でHRTFとは関係がありません。問題を解決することは「高度なDSP」であり、「人工知能は関与する」と答えた人も3人もいる。 – johnwbyrd

+0

1:我々は、ステレオファイルが一度ドルビーであったかどうかを話している。 AACコンテナにはヘッダーがあります。そして、2つの、はい、私はサラウンドのものを得ることを望んでいる信号から特徴を抽出するためにデータのDSPを使用します(これはHRTFによって引き起こされた変化に最も類似しています)。私は信号がサラウンドに属しているのかそうでないのかを見るためにNNのような分類子にこれらの特徴を与えるでしょう。 – Dalen

+0

AIが誰にでも広すぎる場合は、AIを機械学習に変更しています。私が提案する方法では、私はそれを使うだろう。そして、私は大きなサポーターではありません。実際には、90%以上の確実性を達成するために私の方法とあなたの方法の両方を使用します。 – Dalen

関連する問題