I am running into an issue with a custom-built ffmpeg. Basically, its a vanilla ffmpeg with x264 and fdk-aac libs enabled. I am feeding an SDP file through ffmpeg API and get the following error while passing the info to avcodec_open2
:
Audio object type 3 is not supported
My SDP file:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=Unnamed
i=N/A
c=IN IP4 192.168.1.1
t=0 0
a=recvonly
m=audio 8204 RTP/AVP 96
a=rtpmap:96 mpeg4-generic/32000
a=fmtp:96 streamtype=5; profile-level-id=15; mode=AAC-hbr; config=1a88; SizeLength=13; IndexLength=3; IndexDeltaLength=3;
a=control:trackID=0
m=video 8202 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=428028;sprop-parameter-sets=Z0KAKJWgKA9E,aM48gA==;
a=control:trackID=1
m=application 8206 RTP/AVP 96
a=rtpmap:96 smpte336m/10
a=control:trackID=2
The following is the output I get from ffmpeg as I open the input, dump its format, and try to open input streams:
Format sdp probed with size=2048 and score=50
audio codec set to: aac
audio samplerate set to: 32000
audio channels set to: 1
video codec set to: h264
RTP Packetization Mode: 1
RTP Profile IDC: 42 Profile IOP: 80 Level: 28
Extradata set to 0xc8d3dc0 (size: 21)!
File position before avformat_find_stream_info() is 522
Audio object type 3 is not supported.
Could not find codec parameters for stream 1 (Video: h264): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
File position after avformat_find_stream_info() is 522
Dumping input AV format
Input #0, sdp, from 'conf/test.sdp':Metadata:
title :Unnamed
comment :N/ADuration:N/A, bitrate:N/A
Stream #0:0, 0, 1/32000: Audio: aac, 32000 Hz, 1 channels, fltp Stream #0:1, 0, 1/90000: Video: h264, 90k tbr, 90k tbn, 180k tbc Stream #0:2, 0, 1/90000: Data: none, 0/1
Audio object type 3 is not supported.
I also see the error reported for not finding codec parameters for stream 1:
Could not find codec parameters for stream 1 (Video: h264): unspecified size Consider increasing the value for the 'analyzeduration' and 'probesize' options
However, I think that is due to me not running an actual rtp at the moment of the test.
In any case, what may be the reason for getting audio object type 3 not supported exception?
UPDATE - Oct 02, 2013
Static ffmpeg build gives the following flags:
Static ffmpeg 2.0.1 build flag output:
ffmpeg version 2.0.1 Copyright (c) 2000-2013 the FFmpeg developers
built on Sep 30 2013 22:24:00 with gcc 4.1.2 (GCC) 20080704 (Red Hat 4.1.2-54)
configuration: --enable-gpl --enable-nonfree --enable-shared
configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --enable-shared --enable-runtime-cpudetect --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-avfilter --enable-pthreads --enable-x11grab --enable-vdpau --disable-avisynth --enable-libdc1394 --enable-libfaac --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libx264 --enable-libxavs --enable-libxvid --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --disable-stripping
My build is from ffmpeg 2.0.1 snapshot with the following flags:
--enable-static --disable-shared --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libfaac --enable-libmp3lame --enable-libx264 --disable-symver --disable-doc --disable-ffplay --enable-ffmpeg --disable-ffprobe --disable-ffserver --disable-avdevice --disable-avfilter --disable-filters --disable-devices --disable-everything --enable-avformat --enable-avcodec --enable-muxers --enable-protocols --enable-parsers --enable-demuxers --enable-decoders --enable-encoders --enable-bsfs --enable-network --enable-swscale --disable-demuxer=sbg --disable-demuxer=dts --disable-parser=dca --disable-decoder=dca --enable-asm --enable-pthreads --enable-version3
The fdk-aac library version I'm using:
fdk-aac - 0.1.2
So it seems that the same .sdp file causes Audio object type 3 error with my build but not with static but I really do not see what causes it (granted I am not an expert with ffmpeg API and may simply miss important details).
Simplified code for opening .sdp file that doesn't include error checks and logic separation:
AVFormatContext *inputContext = NULL;
av_register_all();
avformat_network_init();
avformat_open_input(&inputContext, "test.sdp", NULL, NULL);
avformat_find_stream_info(inputContext, NULL);
int inAudioStreamIdx = av_find_best_stream(inputContext, AVMEDIA_TYPE_AUDIO, -1, -1, NULL, 0);
AVStream *st = inputContext->streams[inAudioStreamIdx];
AVCodecContext *dec_ctx = st->codec;
AVCodec *dec = avcodec_find_decoder(dec_ctx->codec_id);
avcodec_open2(dec_ctx, dec, NULL); // Fails here with Audio object type 3
Am I opening the sdp input improperly?