title: How to detect audio sampling rate with avprobe / ffprobe?
body: <p>I am using libav 9.6, installed via Homebrew.</p>
  
  <pre><code>$ 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
  </code></pre>
  
  <p>Even though the sampling rate is displayed in the stdout in the command line output, the <code>-show_format</code> option doesn't surface the sampling rate information for the audio file at all.</p>
  
  <p>Here is the BASH terminal output:</p>
  
  <pre><code>$ 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"
    }}
  </code></pre>
  
  <p>And the python code example:</p>
  
  <pre><code>&gt;&gt;&gt; filename = 'sample.gsm'
  &gt;&gt;&gt; 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
  &gt;&gt;&gt; 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"
  }}
  </code></pre>
  
  <p>So I am aware that sampling rate could be a stream specific display to be shown in <code>-show_format</code> option results. But there isn't any other options to detect the sampling rate on a specific audio stream even though it's possible to set it with <code>-ar</code> when re-encoding it.</p>
  
  <p>I filed <a href="https://bugzilla.libav.org/show_bug.cgi?id=547" rel="noreferrer">a ticket</a> to libav but I am just curious if there is any other way to extract sampling rate from libav probing utils. I appreciate the answer beforehand.</p>
  
  <p>PS: it would be the same question for the upstream project of ffmpeg (ffprobe) in this case.</p>