[FFmpeg-devel] AAC decoder handles start of audio stream differently (2.6.2 vs. current git)

Gregory J Wolfe gregory.wolfe at kodakalaris.com
Mon May 9 23:20:59 CEST 2016


I am in the process of upgrading our FFmpeg from 2.6.2 to the latest
git.  One test I ran extracts audio from an AAC stream to a WAV file.
When I examine the audio using Audacity, the stream extracted using
the latest git is 1600 samples shorter, with the missing samples being
from the beginning of the audio stream. Coincidentally, the first
audio time stamp in the original audio stream is -1600 samples.  So
does 2.6.2 have a bug that is fixed in the latest git, or was a bug
introduced into the latest git since 2.6.2?

Below is the console output from the two test runs (built using MinGW,
running on Windows 7).  Note that our actual usage is by direct calls
to the FFmpeg libraries (I get the same result):



% ffmpeg.exe -i F:\VideoTestFiles\StillMation\Ironman2.mov C:\Temp\Ironman2_2.6.2.wav
ffmpeg version 2.6.2 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.8.1 (GCC)
  configuration: --enable-shared --disable-static --enable-memalign-hack --enable-libmp3lame --enable-libopenh264 --extra-ldflags=-static-libgcc --disable-iconv --enable-nvenc --enable-nonfree
  libavutil      54. 20.100 / 54. 20.100
  libavcodec     56. 26.100 / 56. 26.100
  libavformat    56. 25.101 / 56. 25.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 11.102 /  5. 11.102
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'F:\VideoTestFiles\StillMation\Ironman2.mov':
  Metadata:
    major_brand     : qt
    minor_version   : 512
    compatible_brands: qt
    encoder         : Lavf55.50.100
  Duration: 00:00:20.21, start: 0.033333, bitrate: 146801 kb/s
    Stream #0:0(eng): Video: qtrle (rle  / 0x20656C72), bgra, 1920x1080, 146673 kb/s, 24 fps, 24 tbr, 12288 tbn, 12288 tbc (default)
    Metadata:
      handler_name    : DataHandler
      encoder         : Lavc55.71.100 qtrle
      timecode        : 00:00:00:00
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      handler_name    : DataHandler
    Stream #0:2(eng): Data: none (tmcd / 0x64636D74), 0 kb/s
    Metadata:
      handler_name    : DataHandler
      timecode        : 00:00:00:00
Output #0, wav, to 'C:\Temp\Ironman2_2.6.2.wav':
  Metadata:
    major_brand     : qt
    minor_version   : 512
    compatible_brands: qt
    ISFT            : Lavf56.25.101
    Stream #0:0(eng): Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s16, 1536 kb/s (default)
    Metadata:
      handler_name    : DataHandler
      encoder         : Lavc56.26.100 pcm_s16le
Stream mapping:
  Stream #0:1 -> #0:0 (aac (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
size=    3776kB time=00:00:20.13 bitrate=1536.0kbits/s
video:0kB audio:3776kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.002017%



% ffmpeg.exe -i F:\VideoTestFiles\StillMation\Ironman2.mov C:\Temp\Ironman2_Latest.wav
ffmpeg version 3.0.git Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.8.1 (GCC)
  configuration: --enable-shared --disable-static --enable-memalign-hack --enable-libmp3lame --enable-libopenh264 --extra-ldflags=-static-libgcc --disable-iconv --enable-nvenc --enable-nonfree
  libavutil      55. 20.100 / 55. 20.100
  libavcodec     57. 34.101 / 57. 34.101
  libavformat    57. 34.100 / 57. 34.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 41.101 /  6. 41.101
  libswscale      4.  1.100 /  4.  1.100
  libswresample   2.  0.101 /  2.  0.101
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'F:\VideoTestFiles\StillMation\Ironman2.mov':
  Metadata:
    major_brand     : qt
    minor_version   : 512
    compatible_brands: qt
    encoder         : Lavf55.50.100
  Duration: 00:00:20.21, start: 0.000000, bitrate: 146801 kb/s
    Stream #0:0(eng): Video: qtrle (rle  / 0x20656C72), bgra, 1920x1080, 146673 kb/s, 24 fps, 24 tbr, 12288 tbn (default)
    Metadata:
      handler_name    : DataHandler
      encoder         : Lavc55.71.100 qtrle
      timecode        : 00:00:00:00
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      handler_name    : DataHandler
    Stream #0:2(eng): Data: none (tmcd / 0x64636D74), 0 kb/s
    Metadata:
      handler_name    : DataHandler
      timecode        : 00:00:00:00
[wav @ 00492420] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
Output #0, wav, to 'C:\Temp\Ironman2_Latest.wav':
  Metadata:
    major_brand     : qt
    minor_version   : 512
    compatible_brands: qt
    ISFT            : Lavf57.34.100
    Stream #0:0(eng): Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s16, 1536 kb/s (default)
    Metadata:
      handler_name    : DataHandler
      encoder         : Lavc57.34.101 pcm_s16le
Stream mapping:
  Stream #0:1 -> #0:0 (aac (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
size=    3770kB time=00:00:20.10 bitrate=1536.0kbits/s speed= 195x
video:0kB audio:3770kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.002021%



Thanks in advance,

Greg Wolfe, Kodak Alaris


More information about the ffmpeg-devel mailing list