Ticket #513 (closed defect: fixed)

Opened 20 months ago

Last modified 12 months ago

FFMpeg is unable to find the aac codec parameters for mp4 file

Reported by: workcutter@… Owned by:
Priority: normal Component: avcodec
Version: git-master Keywords: aac mov
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

./ffmpeg -loglevel debug -i Nero32kbps_CBR.mp4

ffmpeg version N-32991-g7c1aba4, Copyright (c) 2000-2011 the FFmpeg developers

built on Sep 27 2011 11:34:31 with gcc 4.5.2
configuration: --enable-debug=3 --disable-stripping --disable-optimizations --disable-asm --enable-gpl --disable-encoders --disable-decoders --disable-bsfs --disable-filters --disable-muxers --disable-hwaccels --disable-indevs --disable-outdevs --disable-devices --disable-protocols --disable-demuxers --disable-parsers --disable-altivec --disable-decoder=vorbis --enable-decoder=mp3 --enable-decoder=aac --enable-parser=aac --enable-parser=mpegaudio --enable-demuxer=aac --enable-demuxer=aiff --enable-demuxer=asf --enable-demuxer=mov --enable-demuxer=mp3 --enable-demuxer=pcm_alaw --enable-demuxer=pcm_f32be --enable-demuxer=pcm_f32le --enable-demuxer=pcm_f64be --enable-demuxer=pcm_f64le --enable-demuxer=pcm_mulaw --enable-demuxer=pcm_s16be --enable-demuxer=pcm_s16le --enable-demuxer=pcm_s24be --enable-demuxer=pcm_s24le --enable-demuxer=pcm_s32be --enable-demuxer=pcm_s32le --enable-demuxer=pcm_s8 --enable-demuxer=pcm_u16be --enable-demuxer=pcm_u16le --enable-demuxer=pcm_u24be --enable-demuxer=pcm_u24le --enable-
libavutil 51. 18. 0 / 51. 18. 0
libavcodec 53. 18. 0 / 53. 18. 0
libavformat 53. 13. 0 / 53. 13. 0
libavdevice 53. 4. 0 / 53. 4. 0
libavfilter 2. 43. 5 / 2. 43. 5
libswscale 2. 1. 0 / 2. 1. 0
libpostproc 51. 2. 0 / 51. 2. 0

[mov,mp4,m4a,3gp,3g2,mj2 @ 0x9fdfaa0] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x9fdfaa0] ISO: File Type Major Brand: mp42
[aac @ 0x9fe6350] Unsupported bit depth: 0
[aac @ 0x9fe6350] channel element 0.0 is not allocated

Last message repeated 524 times

[mov,mp4,m4a,3gp,3g2,mj2 @ 0x9fdfaa0] Could not find codec parameters (Audio: aac (mp4a / 0x6134706D), stereo, s16, 32 kb/s)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Nero32kbps_CBR.mp4':

Metadata:

major_brand : mp42
minor_version : 0
compatible_brands: mp42isom
creation_time : 2006-03-23 15:10:30
artist : WAV
encoder : Nero AAC Codec 4.2.4.8

Duration: 00:00:24.44, start: 0.000000, bitrate: 33 kb/s

Stream #0:0(eng), 525, 1/44100: Audio: aac (mp4a / 0x6134706D), stereo, s16, 32 kb/s
Metadata:

creation_time : 2006-03-23 15:10:30

Stream #0:1(eng), 1, 1/1000: Data: none (mp4s / 0x7334706D)
Metadata:

creation_time : 2006-03-23 15:10:31

Stream #0:2(eng), 1, 1/1000: Data: none (mp4s / 0x7334706D)
Metadata:

creation_time : 2006-03-23 15:10:31

At least one output file must be specified

Attachments

Nero 032 kbps CBR-HE.mp4 Download (100.3 KB) - added by workcutter@… 20 months ago.

Change History

Changed 20 months ago by workcutter@…

comment:1 Changed 20 months ago by cehoyos

Please upload or point to a sample.

comment:2 Changed 20 months ago by cehoyos

  • Keywords channel element 0.0 is not allocated, Could not find codec parameters removed
  • Status changed from new to open
  • Version changed from git to git-master
  • Reproduced by developer set

Works (to a certain degree) with mplayer -ac faad.

comment:3 Changed 20 months ago by cehoyos

  • Keywords aac added

comment:4 Changed 20 months ago by workcutter@…

I am using the av_find_streaminfo to find the stream properties and then create frames. But since the call fails we are unable to proceed further. We do not have an option to directly decode the frames using libfaad. Is there something else we can do by just using the ffmpeg api and not using the libfaad?

comment:5 Changed 19 months ago by cehoyos

  • Keywords mov added
  • Summary changed from FFMpeg is unable to find the codec parameters for mp4 file to FFMpeg is unable to find the aac codec parameters for mp4 file

comment:6 Changed 14 months ago by reimar

How was that file created? It is clearly invalid, it claims the audio is coded as two channels, but there is only one (+ parametric stereo, so it looks like two, but still only one is encoded).
The below patch proves that by fixing playback (but of course will break any non-mono AAC file)

--- a/libavcodec/mpeg4audio.c
+++ b/libavcodec/mpeg4audio.c
@@ -89,6 +89,7 @@ int avpriv_mpeg4audio_get_config(MPEG4AudioConfig *c, const uint8_t *buf,
     c->object_type = get_object_type(&gb);
     c->sample_rate = get_sample_rate(&gb, &c->sampling_index);
     c->chan_config = get_bits(&gb, 4);
+c->chan_config = 1;
     if (c->chan_config < FF_ARRAY_ELEMS(ff_mpeg4audio_channels))
         c->channels = ff_mpeg4audio_channels[c->chan_config];
     c->sbr = -1;

comment:7 Changed 12 months ago by cehoyos

  • Status changed from open to closed
  • Resolution set to fixed

Fixed by Michael.

Note: See TracTickets for help on using tickets.