Я использую libav 9.6, установленный через Homebrew.Как определить частоту дискретизации аудио с помощью avprobe/ffprobe?
$ avprobe -version
avprobe version 9.6, Copyright (c) 2007-2013 the Libav developers
built on Jun 8 2013 02:44:19 with Apple LLVM version 4.2 (clang-425.0.24) (based on LLVM 3.2svn)
avprobe 9.6
libavutil 52. 3. 0/52. 3. 0
libavcodec 54. 35. 0/54. 35. 0
libavformat 54. 20. 3/54. 20. 3
libavdevice 53. 2. 0/53. 2. 0
libavfilter 3. 3. 0/3. 3. 0
libavresample 1. 0. 1/1. 0. 1
libswscale 2. 1. 1/2. 1. 1
Даже если частота дискретизации отображается в стандартном выводе в выводе командной строки, опция -show_format
не размещать информацию о частоте дискретизации для аудио файла на всех.
Вот выход BASH терминал:
$ avprobe -v verbose -show_format -of json sample.gsm
avprobe version 9.6, Copyright (c) 2007-2013 the Libav developers
built on Jun 8 2013 02:44:19 with Apple LLVM version 4.2 (clang-425.0.24)
(based on LLVM 3.2svn)
configuration: --prefix=/usr/local/Cellar/libav/9.6 --enable-shared
--enable-pthreads --enable-gpl --enable-version3 --enable-nonfree
--enable-hardcoded-tables --enable-avresample --enable-vda --enable-gnutls
--enable-runtime-cpudetect --disable-indev=jack --cc=cc --host-cflags=
--host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame
--enable-libxvid --enable-avplay
libavutil 52. 3. 0/52. 3. 0
libavcodec 54. 35. 0/54. 35. 0
libavformat 54. 20. 3/54. 20. 3
libavdevice 53. 2. 0/53. 2. 0
libavfilter 3. 3. 0/3. 3. 0
libavresample 1. 0. 1/1. 0. 1
libswscale 2. 1. 1/2. 1. 1
[gsm @ 0x7f8012806600] Estimating duration from bitrate, this may be inaccurate
Input #0, gsm, from 'sample.gsm':
Duration: 00:03:52.32, start: 0.000000, bitrate: 13 kb/s
Stream #0.0: Audio: gsm, 8000 Hz, mono, s16, 13 kb/s
{ "format" : {
"filename" : "sample.gsm",
"nb_streams" : 1,
"format_name" : "gsm",
"format_long_name" : "raw GSM",
"start_time" : "0.000000",
"duration" : "232.320000",
"size" : "383328.000000",
"bit_rate" : "13200.000000"
}}
И пример питон код:
>>> filename = 'sample.gsm'
>>> result = subprocess.check_output(['avprobe', '-show_format', '-of',
'json', filename])
avprobe version 9.6, Copyright (c) 2007-2013 the Libav developers
built on Jun 8 2013 02:44:19 with Apple LLVM version 4.2
(clang-425.0.24) (based on LLVM 3.2svn)
[gsm @ 0x7fe0b1806600] Estimating duration from bitrate, this may be
inaccurate
Input #0, gsm, from 'sample.gsm':
Duration: 00:03:52.32, start: 0.000000, bitrate: 13 kb/s
Stream #0.0: Audio: gsm, 8000 Hz, mono, s16, 13 kb/s
>>> print result
{ "format" : {
"filename" : "sample.gsm",
"nb_streams" : 1,
"format_name" : "gsm",
"format_long_name" : "raw GSM",
"start_time" : "0.000000",
"duration" : "232.320000",
"size" : "383328.000000",
"bit_rate" : "13200.000000"
}}
Так что я отдаю себе отчет в том, что частота дискретизации может быть поток конкретных дисплей будет показан в -show_format
опции Результаты. Но нет никаких других опций для определения частоты дискретизации для определенного аудиопотока, хотя при повторном кодировании можно установить его с -ar
.
Я подал a ticket в libav, но мне просто интересно узнать, есть ли другой способ извлечь частоту дискретизации из утилит libav-зондирования. Я ценю ответ заранее.
PS: В этом случае это будет тот же вопрос для восходящего проекта ffmpeg (ffprobe).
Отлично! Спасибо за объяснение Антона! '-show_streams' работает :) – Devy