#5162: aac encoder adds extra frame(s) ---------------------------------+-------------------------------------- Reporter: slhck | Type: defect Status: new | Priority: normal Component: avcodec | Version: git-master Keywords: aac | Blocked By: Blocking: | Reproduced by developer: 0 Analyzed by developer: 0 | ---------------------------------+-------------------------------------- Summary of the bug: The aac encoder adds one extra audio frame when encoding
How to reproduce: {{{ ffmpeg -i out.mp4 -c:v copy -c:a aac out2.mp4 ffmpeg version N-78077-g5989add-tessus Copyright (c) 2000-2016 the FFmpeg developers built with Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn) configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --as=yasm --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable- libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable- libxavs --enable-libxvid --enable-libzmq --enable-version3 --disable- ffplay --disable-indev=qtkit --disable-indev=x11grab_xcb libavutil 55. 13.100 / 55. 13.100 libavcodec 57. 22.100 / 57. 22.100 libavformat 57. 21.101 / 57. 21.101 % !3491 libavdevice 57. 0.100 / 57. 0.100 libavfilter 6. 25.100 / 6. 25.100 libswscale 4. 0.100 / 4. 0.100 libswresample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'out.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf56.40.101 Duration: 00:12:53.97, start: 0.000000, bitrate: 2180 kb/s Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 1857 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default) Metadata: handler_name : VideoHandler Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 317 kb/s (default) Metadata: handler_name : SoundHandler [mp4 @ 0x7f8f8b842a00] Codec for stream 0 does not use global headers but container format requires global headers Output #0, mp4, to 'out2.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf57.21.101 Stream #0:0(eng): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1920x1080, q=2-31, 1857 kb/s, 25 fps, 25 tbr, 12800 tbn, 12800 tbc (default) Metadata: handler_name : VideoHandler Stream #0:1(eng): Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz, stereo, fltp, 128 kb/s (default) Metadata: handler_name : SoundHandler encoder : Lavc57.22.100 aac Stream mapping: Stream #0:0 -> #0:0 (copy) Stream #0:1 -> #0:1 (aac (native) -> aac (native)) Press [q] to stop, [?] for help frame=19348 fps=353 q=-1.0 Lsize= 188726kB time=00:12:53.97 bitrate=1997.5kbits/s speed=14.1x video:175481kB audio:12669kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.306213% [aac @ 0x7f8f8b806600] Qavg: 691.497 }}} The input file: {{{ ffprobe -i out.mp4 -show_streams | grep nb_frames … nb_frames=36280 }}} The output file has one extra (audio) frame: {{{ ffprobe -i out2.mp4 -show_streams | grep nb_frames … nb_frames=36281 }}} This means that if you re-encode a file multiple times, audio and video will become more and more asynchronous. The same bug affects libfdk_aac as well, although it adds two frames. When I add `-shortest`, I get one frame ''less'' than the original file. -- Ticket URL: <https://trac.ffmpeg.org/ticket/5162> FFmpeg <https://ffmpeg.org> FFmpeg issue tracker _______________________________________________ FFmpeg-trac mailing list FFmpeg-trac@avcodec.org http://ffmpeg.org/mailman/listinfo/ffmpeg-trac