FFmpeg проверяет аудио каналы на тишину

У меня два .mp4 файлы, имеющие 8 (7.1) аудиоканалов. Но на самом деле мне сказали, что у кого-то есть stereo аудио канал + 2 SAP (вторичное аудио на каналах 7-8), а другой имеет 6 (5.1) аудио каналы + 2 SAP (на каналах 7-8). Так что в основном у последнего есть несколько [настоящих] аудиоканалов, таких как Center канал, в котором его нет в прежнем стерео (хотя у него есть эти каналы, но, видимо, они молчат / отключены).

Я пытался увидеть некоторые дифференцирующие метаданные, чтобы как-то дифференцировать два, используя Mediainfo, но метаданные для обоих выглядят одинаково. Также пробовал некоторые основные метаданные поиска с ffmpeg а также ffprobeопять они оба выглядят одинаково - не повезло

ffprobe -i 2ch.mp4 -show_streams -select_streams a:0

Итак, вопрос: ffmpeg или же ffprobe есть какие-нибудь быстрые способы разграничить эти два? Существуют ли какие-либо аудиофильтры, которые могут определить, молчит ли конкретный аудиоканал или нет? Или любые другие отличительные метаданные? Я бы предпочел разграничить их по метаданным, чем по контентному анализу.

Это образец 2 канала mp4 файл, и это образец 6-канального mp4,

1 ответ

Решение

Оба ваших файла с примерами имеют 4 аудиопотока или дорожки. Каждая звуковая дорожка имеет 2 канала, с макетом стерео.

По-видимому, аудиокодер имеет постоянную скорость передачи данных, и поэтому метаданные не могут использоваться для различения тихих дорожек от несущих звук.

Вам нужно будет проанализировать каждый подозрительный аудиопоток.

ffmpeg -i file -map 0:a:1 -af astats -f null -

В конце журнала консоли будет напечатана статистика для аудиопотока,

например

[Parsed_astats_0 @ 0000000003c3aec0] Channel: 1
[Parsed_astats_0 @ 0000000003c3aec0] DC offset: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] Min level: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] Max level: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] Min difference: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] Max difference: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] Mean difference: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] RMS difference: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] Peak level dB: -6153.053111
[Parsed_astats_0 @ 0000000003c3aec0] RMS level dB: -inf
[Parsed_astats_0 @ 0000000003c3aec0] RMS peak dB: -3076.526556
[Parsed_astats_0 @ 0000000003c3aec0] RMS trough dB: -inf
[Parsed_astats_0 @ 0000000003c3aec0] Crest factor: 1.000000
[Parsed_astats_0 @ 0000000003c3aec0] Flat factor: -inf
[Parsed_astats_0 @ 0000000003c3aec0] Peak count: 662528
[Parsed_astats_0 @ 0000000003c3aec0] Bit depth: 0/0
[Parsed_astats_0 @ 0000000003c3aec0] Dynamic range: -inf
[Parsed_astats_0 @ 0000000003c3aec0] Zero crossings: 0
[Parsed_astats_0 @ 0000000003c3aec0] Zero crossings rate: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] Channel: 2
[Parsed_astats_0 @ 0000000003c3aec0] DC offset: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] Min level: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] Max level: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] Min difference: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] Max difference: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] Mean difference: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] RMS difference: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] Peak level dB: -6153.053111
[Parsed_astats_0 @ 0000000003c3aec0] RMS level dB: -inf
[Parsed_astats_0 @ 0000000003c3aec0] RMS peak dB: -3076.526556
[Parsed_astats_0 @ 0000000003c3aec0] RMS trough dB: -inf
[Parsed_astats_0 @ 0000000003c3aec0] Crest factor: 1.000000
[Parsed_astats_0 @ 0000000003c3aec0] Flat factor: -inf
[Parsed_astats_0 @ 0000000003c3aec0] Peak count: 662528
[Parsed_astats_0 @ 0000000003c3aec0] Bit depth: 0/0
[Parsed_astats_0 @ 0000000003c3aec0] Dynamic range: -inf
[Parsed_astats_0 @ 0000000003c3aec0] Zero crossings: 0
[Parsed_astats_0 @ 0000000003c3aec0] Zero crossings rate: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] Overall
[Parsed_astats_0 @ 0000000003c3aec0] DC offset: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] Min level: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] Max level: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] Min difference: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] Max difference: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] Mean difference: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] RMS difference: 0.000000
[Parsed_astats_0 @ 0000000003c3aec0] Peak level dB: -6153.053111
[Parsed_astats_0 @ 0000000003c3aec0] RMS level dB: -inf
[Parsed_astats_0 @ 0000000003c3aec0] RMS peak dB: -3076.526556
[Parsed_astats_0 @ 0000000003c3aec0] RMS trough dB: -inf
[Parsed_astats_0 @ 0000000003c3aec0] Flat factor: -inf
[Parsed_astats_0 @ 0000000003c3aec0] Peak count: 662528.000000
[Parsed_astats_0 @ 0000000003c3aec0] Bit depth: 0/0
[Parsed_astats_0 @ 0000000003c3aec0] Number of samples: 662528

Если RMS level dB является -infтогда этот канал молчит.

Другие вопросы по тегам