Разбор статистики в ffprobe - PullRequest
       20

Разбор статистики в ffprobe

0 голосов
/ 17 февраля 2020

Я собираю некоторую информацию метаданных аудиофайлов, используя ffprobe. Однако, из-за моего незнакомства с этим инструментом, я получаю дополнительную информацию, в которой нет необходимости. Это команда, которую я запускаю:

ffprobe -f lavfi -i amovie=<audio_file>,astats=metadata=1:reset=4400 -hide_banner

Это краткий пример вывода того, что я получаю:

Input #0, lavfi, from 'amovie=<audio_file>,astats=metadata=1:reset=4400':
  Duration: N/A, start: 0.000000, bitrate: 3072 kb/s
    Stream #0:0: Audio: pcm_f32le, 48000 Hz, stereo, flt, 3072 kb/s
[Parsed_astats_1 @ 0x7fcfd4d01140] Channel: 1
[Parsed_astats_1 @ 0x7fcfd4d01140] DC offset: -0.032707
[Parsed_astats_1 @ 0x7fcfd4d01140] Min level: -0.041852
...

Есть ли комбинация флагов, которая выдаст хороший вывод JSON или CSV, скрывающий Input #0 ... and [Parsed_astats_1 @ 0x7fcfd4d01140], например:

{
    "Channel": 1,
    "DC offset": -0.032707,
    "Min level": -0.041852
    ...
}

1 Ответ

1 голос
/ 18 февраля 2020

Самое лучшее решение, которое я могу придумать, это использование фильтра ametadata и запись статистики в файл.

$ ffmpeg -f lavfi -i sine -t 1s -af 'astats=metadata=1:reset=4400:metadata=true,ametadata=mode=print:file=stats' -f null -
$ cat stats
...
lavfi.astats.1.Bit_depth=16.000000
lavfi.astats.1.Bit_depth2=16.000000
lavfi.astats.1.Dynamic_range=78.265678
lavfi.astats.1.Zero_crossings=920.000000
lavfi.astats.1.Zero_crossings_rate=0.019965
lavfi.astats.Overall.DC_offset=0.000043
lavfi.astats.Overall.Min_level=-4095.000000
lavfi.astats.Overall.Max_level=4095.000000
lavfi.astats.Overall.Min_difference=0.000000
lavfi.astats.Overall.Max_difference=257.000000
lavfi.astats.Overall.Mean_difference=163.407865
lavfi.astats.Overall.RMS_difference=181.500114
lavfi.astats.Overall.Peak_level=-18.063656
lavfi.astats.Overall.RMS_level=-21.073770
lavfi.astats.Overall.RMS_peak=-21.058020
lavfi.astats.Overall.RMS_trough=-21.118775
lavfi.astats.Overall.Flat_factor=0.000000
lavfi.astats.Overall.Peak_count=502.000000
lavfi.astats.Overall.Bit_depth=16.000000
lavfi.astats.Overall.Bit_depth2=16.000000
lavfi.astats.Overall.Number_of_samples=46080.000000

Я думаю, вас интересуют последние кадры lavfi.astats.Overall.* значения.

...