[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