【问题标题】:How to determine if an audio track is a Dolby Pro Logic II mixdown如何确定音轨是否为 Dolby Pro Logic II 混音
【发布时间】:2017-09-09 08:35:35
【问题描述】:

我正在尝试找出是否有办法确定 AAC 编码的音轨是否使用杜比定向逻辑 II 数据进行编码。有没有办法检查文件以便您可以看到这些信息?例如,我在 Handbrake 中使用(截断为音频选项)-E av_aac -B 320 --mixdown dpl2 编码了一个媒体文件,这是mediainfo 显示的音轨输出:

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 数据编码的。

【问题讨论】:

  • “例如,我在 Handbrake 中编码了一个媒体文件” 有一个小样本文件(秒而不是 2 小时长)?如果在输出文件的字节中提到它,那么我们可以尝试建议如何检索这些信息

标签: audio aac audio-processing handbrake dolby


【解决方案1】:

tl:博士;这可能是可能的;如果您是程序员,可能会更容易。

由于编码的信息只是立体声模拟对,因此无法保证检测到其中的杜比定向逻辑 II (DPL2) 信号,除非您专门存储自己的元数据,并注明“这是一个 DPL2 文件”。但你可能会猜得很好。

所有旧的模拟杜比环绕声格式(包括 DPL2)都通过反转环绕声或环绕声的相位然后将它们混合到原始左右声道中来将环绕声信息存储在两个声道中。杜比环绕声类型解码器,包括 DPL2,试图通过反转两个通道之一的相位,然后在这些信号对中寻找相似性来恢复此信息。这要么是微不足道的,如在杜比环绕声中,要么是人为地将这些相似性推向更远的左侧或右侧,或者左侧或右侧的环绕声,如 DPL2。

因此,诀窍是检测重要数据是否存储在环绕声道中。我会为你勾勒出一个可行的方法,我会尝试在不编写代码的情况下表达它,但是你可以根据自己的喜好来实现和改进它。

  1. 将前 N 秒左右的节目内容裁剪成立体声文件,其中 N 介于 1 到 30 之间。将此文件称为 Input。
  2. 将输入立体声通道混合成一个新的单声道文件,每通道 -3dB。将此文件称为中心。
  3. 将 Input 的左右声道拆分为单独的文件。称它们为左和右。
  4. 反转右声道。将此文件称为 RightInvert。
  5. 将左右反转通道混合成一个新的单声道文件,每通道 -3dB。将此文件称为环绕声。
  6. 确定环绕声文件的 RMS 和峰值 dB。
  7. 如果环绕文件的 RMS 或峰值 DB 低于“一个容差”,则停止;原始文件是单声道或中心声像,因此不包含环绕声信息。您必须尝试使用​​多个 DPL2 和非 DPL2 源来查看这些容差是多少,但是在十几个文件之后,数字应该会变得清晰。我猜大约 -30 dB 左右。
  8. 将中心文件转换为新文件。将此文件称为 CenterInvert。
  9. 以 0 dB 将 CenterInvert 文件混合到 Surround 文件中(CenterInvert 和 Surround 都应该是单声道)。将此新文件称为 SurroundInvert。
  10. 确定 SurroundInvert 文件的 RMS 和峰值 dB。
  11. 如果 SurroundInvert 的 RMS 和/或峰值 dB 低于“容差”,则停止;您的原始源包含平移的左前或右前信息,而不是环绕信息。您必须对多个 DPL2 和非 DPL2 源进行试验,才能了解这些容差是多少,但是在十几个文件之后,数字应该会变得清晰 - 我猜大约 -35 dB 左右。
  12. 如果您已经走到这一步,您的原始输入可能包含环绕声信息,因此可能是杜比环绕声编码系列的成员。

我已经编写了这个算法,这样您就可以使用sox 中的特定命令来执行每个步骤。如果您想变得更漂亮,而不是在 sox 中执行 RMS/峰值步骤,您可以运行 ebur128 程序并根据公差检查您在 LUFS 中的水平。如果您想要更高级,在创建环绕声和中心文件后,您可以过滤掉所有高于 7kHz 的频率并对其进行去加重,就像真正的 DPL2 解码器一样。

为了保持这个算法简单,我已经完全在幅度域中勾勒出它。如果您知道如何计算 FFT 箱的幅度和角度并且使用 30 到 100 ms 的窗口,则 SurroundLevel 文件的计算可能会在频域中更准确地完成。但是上面这个便宜的版本应该可以帮助您入门。

最后一点警告。 AAC 是一种现代的心理声学编解码器,这意味着它喜欢玩带有立体声相位和成像的游戏以实现其压缩。因此,我认为仅将 DPL2 封装到 AAC 流中的行为很可能会处理 DPL2 中存在的一些成像。坦率地说,DPL2 和 AAC 都不属于这个管道的任何地方。如果您必须存储最初使用 DPL2 编码的模拟流,请以 WAV 或 FLAC 等无损格式存储,而不是 AAC。

在撰写本文时,杜比定向逻辑 (I) 背后的操作概念是 here。这些基本概念仍然适用于 DPL2; DPL2 的操作概念是here

【讨论】:

  • +1 来自我,尽管这种方法会产生很多误报。例如,您可以通过使用放置不当的麦克风进行录音来获得相位反转。无时无刻不在发生。
  • Dalen 说蹩脚的录音可能有相位反转,但没有办法治愈糟糕的音乐;相位反转也不会“一直发生”。
  • 没有?当立体声加宽的回声效果消失时会发生什么。哦,如果是长音符,即使是简单的回声有时也会看起来像是倒置的信号。实际使用反相的合成材料怎么样?完成简单的 MS 后会怎样?相位声码器用于时间拉伸或音高变化,或者事实上,当使用任何使用大重叠的滤波器时。在窗口边缘总是有一些反转的可能性。你不能一直避免它,只是为了你能够说它最初不是在右前方,所以它应该转到右后扬声器。
  • 还有不同的乐器演奏相同的音符,一个在左声道,一个在右声道,虽然没有实际的反转,但可能会出现在您的算法中,因为减法时谐波不需要产生接近 0 的结果。并且在录制时发生的情况不一定听起来很糟糕。但通常会这样做。
  • 您还必须注意检查窗口后的放松时间,以消除愚蠢的事件。就像引入噪声门时一样。可能也使用可变大小的窗口。
【解决方案2】:

如果文件有多个声道,您可以肯定地假设它们用于环绕目的,尽管它们可能只是多个轨道。 在这种情况下,它落在与频道有关的播放系统上,因为它“认为”最好。 (如果文件头没有说明该怎么做)

但是你的文件是立体声的。如果您想知道它是否是虚拟环绕文件,那么您可以在标题中查找编码器字段以查看使用了哪个编码器。 这可能会有所帮助,尽管作用不大。大多数编码器字段是空的,第二件事是编码器不必与混合环绕数据的重新编码器相同。 IE。重新编码器将首先创建原始 PCM 数据,然后将其提供给某个编码器以生成压缩文件。 (AAC 或其他) 此外,有许多应用程序和版本各不相同,编码器领域也可能如此,因此跟踪所有这些将是一件令人讨厌的工作。

但是,您可以通过检查数据推断出某物是否是虚拟环绕声,确定性超过 60%。 这将是高级 DSP,为了速度,甚至可能涉及机器学习。 您必须查明立体声信号是否包含 HRTF(与头部相关的传递函数)的某些特征。 这可以通过检查时域中出现的相同声音之间的强度差异和延迟特征以及频域中的谐波特征(特征频率变化)来实现。 您必须两者都做,因为没有另一个可能只会告诉您某些东西是非常好的立体声录音,而不是虚拟环绕声。 我不知道是否已经在某个地方映射了 HRTF 特定功能,或者您需要自己做。

这是一个非常复杂的解决方案,需要花费大量时间才能正确完成。它的性能也会有问题。

使用这种方法,您还可以将立体声混音分解为几乎原始的环绕声道。 但是对于立体声到环绕声的转换,使用了其他方法并且它们听起来不错。

如果您决心执行这样的检测,如果没有映射 HRTF 特征,则花费半年或更长时间的努力工作,如果是,则花费几周的时间, 为巨大的压力做好准备,祝你好运。我做过类似的事情。这是一个杀手。

如果您想要一个开箱即用的解决方案,那么您的问题的答案是否定的,除非标题为您提供了编码器字段并且编码器是独特的并且已知仅用于进行环绕声到立体声的转换。 我不认为有人像我描述的那样从实际数据中做到这一点,或者如果他们这样做了,那也是商业产品的一部分。通常不需要做自己想做的事,但可以做到。

哦,顺便说一句,尝试谷歌搜索 HRTF 反转,它可能会提供一些帮助。

【讨论】:

  • 一、杜比PL2无包头;二、杜比PL2与HRTF无关,除非在最广泛的意义上;三、说解决问题会是“高级DSP”,“会涉及人工智能”既不是答案,也不是正确的。
  • 一:我们说的是立体声文件是否曾经是杜比。 AAC 容器肯定有一个标题。而且,两个,是的,我会在数据上使用 DSP 从信号中提取特征,希望获得环绕声(这与 HRTF 引起的变化最相似)。我会将这些特征提供给像 NN 这样的分类器,以查看信号是否属于环绕声。
  • 如果人工智能对任何人来说都过于宽泛,我正在将人工智能转变为机器学习。在我提出的一种方法中,我会使用它。而且,我不是一个大支持者。事实上,我会同时使用我和你的方法来实现 90% 或以上的确定性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-18
相关资源
最近更新 更多