FFmpeg проверяет аудио каналы на тишину - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть два .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 Ответ

0 голосов
/ 10 февраля 2019

Оба ваших файла с примерами имеют 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, то этот канал молчит.

...