Ticket #513 (closed defect: fixed)
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
Change History
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: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;



