2013-10-02 120 views
0

我遇到了定製的ffmpeg問題。基本上,它是一個x264和fdk-aac庫啓用的香草ffmpeg。我餵過ffmpeg的API SDP文件,並收到以下錯誤而傳遞信息,以avcodec_open2不支持音頻對象類型3

音頻對象類型3不支持

我的SDP文件:

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 

以下是我從ffmpeg獲得的輸出,當我打開輸入,轉儲它的格式並嘗試打開輸入流時:

與大小= 2048和得分探測

格式SDP = 50
音頻編解碼器設置爲:AAC
音頻採樣率設置爲:設置爲32000個
音頻通道:1個
視頻編解碼器設置爲:H264
RTP打包方式:1
RTP配置文件IDC:42配置文件IOP:80級別:28
Extradata設置爲0xc8d3dc0(大小:21)!
avformat_find_stream_info()之前的文件位置是522
不支持音頻對象類型3。
找不到流1編解碼器的參數(視頻:H264):未指定的大小
考慮爲「analyzeduration」和「probesize」選項
文件位置後avformat_find_stream_info()是522
傾銷輸入AV格式的保值增值
輸入#0,SDP,從 'CONF/test.sdp':

元數據:
標題:未命名
評論:N/A

時間:N/A ,比特率: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 

不支持音頻對象類型3。

我也看到報道爲流1沒有找到編解碼器的參數錯誤:

找不到流1編解碼器的參數(視頻:H264):未指定的尺寸 考慮的保值增值'分析'和'探測器'選項

但是,我認爲這是由於我沒有在測試時運行實際的rtp。

在任何情況下,可能是什麼原因獲得音頻對象類型3不被支持異常?

更新 - 2013年10月2日

靜態ffmpeg的構建提供了以下標誌:

靜態的ffmpeg 2.0.1編譯標誌輸出:

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 

我的版本是從FFmpeg的2.0 .1快照使用以下標誌:

--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 

我使用的FDK-AAC庫版本:

FDK-AAC - 0.1.2

如此看來,同.sdp文件會導致音頻對象類型3錯誤與我的構建,但沒有與靜態,但我真的不知道是什麼原因造成的(授予我不是ffmpeg API的專家,可能只是錯過重要的細節)。

用於打開.sdp文件不包括錯誤檢查和邏輯分離簡化的代碼:

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 

我是否打開SDP輸入不正確?

+0

它可能是指AAC-HBR(Hgih比特率)編碼,這被認爲是AAC的無支持味道。 –

回答

1

首先,對象類型3是AAC-SSR(它是在ISO 14496-3中定義的),據我所知,它在ffmpeg解碼器中不被支持。至於h.264錯誤,「未指定的大小」消息是指解碼器不能用視頻分辨率配置的事實。該分辨率在SPS/PPS NALU中指定,在AVC基本流中。

FFmpeg(特別是libavcodec)會分析數據流幾秒鐘,以確定需要配置解碼器的參數。您的流長度爲0秒,因此解碼器從未配置正確。因此,錯誤。

+0

嗯,似乎我某種程度上不適當建設,因爲靜態ffmpeg 2.0.1建立給出適當的輸出。評論太短,所以我會更新我的OP。 – Vadym

相關問題