热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

不支持音频对象类型3。-Audioobjecttype3isnotsupported

Iamrunningintoanissuewithacustom-builtffmpeg.Basically,itsavanillaffmpegwithx264and

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:

我遇到了一个问题,一个定制的ffmpeg。基本上,它是一个带有x264和fdk-aac libs的香草ffmpeg。我正在通过ffmpeg API输入一个SDP文件,并在将信息传递给avcodec_open2时得到以下错误:

Audio object type 3 is not supported

不支持音频对象类型3。

My SDP file:

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

The following is the output I get from ffmpeg as I open the input, dump its format, and try to open input streams:

下面是我打开输入时从ffmpeg得到的输出,转储它的格式,并尝试打开输入流:

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

格式sdp probed与size=2048和score=50音频编解码器设置为:aac音频samplerate设置为:32000音频频道设置为:1视频编解码器设置为:h264 RTP packe化模式:1 RTP配置文件IDC: 42 Profile IOP: 80 Level: 28 Extradata set to 0xc8d3dc0 (size: 21)!在avformat_find_stream_info()之前,文件位置是522音频对象类型3不受支持。无法找到流1(视频:h264)的编解码器参数:在avformat_find_stream_info()为522 dump输入AV格式输入#0,sdp,从'conf/test.sdp'中,未指定的大小考虑增加“分析化”和“probesize”选项文件位置的值。

Metadata:
title :Unnamed
comment :N/A

元数据:标题:匿名评论:N/A。

Duration:N/A, bitrate: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  

Audio object type 3 is not supported.

不支持音频对象类型3。

I also see the error reported for not finding codec parameters for stream 1:

我也看到了没有找到流1的编解码器参数的错误报告:

Could not find codec parameters for stream 1 (Video: h264): unspecified size Consider increasing the value for the 'analyzeduration' and 'probesize' options

无法找到流1的编解码器参数(视频:h264):未指定大小考虑增加“分析化”和“probesize”选项的值?

However, I think that is due to me not running an actual rtp at the moment of the test.

但是,我认为这是由于我在测试的时候没有运行实际的rtp。

In any case, what may be the reason for getting audio object type 3 not supported exception?

在任何情况下,获得音频对象类型3的原因可能不支持异常?

UPDATE - Oct 02, 2013

更新- 2013年10月02日

Static ffmpeg build gives the following flags:

静态ffmpeg构建给出了以下标志:

Static ffmpeg 2.0.1 build flag output:

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

My build is from ffmpeg 2.0.1 snapshot with the following flags:

我的构建来自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

The fdk-aac library version I'm using:

我正在使用的fdk-aac库版本:

fdk-aac - 0.1.2

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

因此,似乎相同的。sdp文件会导致我的构建导致音频对象类型3错误,但不是静态的,但我确实不知道是什么原因造成的(当然,我不是ffmpeg API的专家,可能只是忽略了重要的细节)。

Simplified code for opening .sdp file that doesn't include error checks and logic separation:

打开。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

Am I opening the sdp input improperly?

我打开sdp输入不正确吗?

1 个解决方案

#1


1  

First of, Object type 3 is AAC-SSR (It is defined in ISO 14496-3), And to the best of my knowledge it is not supported in the ffmpeg deocoder. As for the h.264 error, The 'unspecified size' message refers to the fact the decoder could not be configured with the video resolution. The resolution is specified in the SPS/PPS NALUs int he AVC Elementary Stream.

首先,对象类型3是AAC-SSR(它在ISO 14496-3中定义),并且根据我的知识,它不支持ffmpeg deocoder。对于h。264错误,“未指定尺寸”信息是指解码器无法通过视频分辨率配置的事实。该决议是在SPS/PPS NALUs int中指定的。

FFmpeg (specifically libavcodec) will analyze a stream for a few seconds to determine the parameters need to configure the decoders. You had a stream length of 0 seconds, hence the decoders were never configured properly. Hence the errors.

FFmpeg(特别是libavcodec)将分析一个流,以确定需要配置解码器的参数。您的流长度为0秒,因此无法正确配置解码器。因此,错误。


推荐阅读
  • 在Android平台中,播放音频的采样率通常固定为44.1kHz,而录音的采样率则固定为8kHz。为了确保音频设备的正常工作,底层驱动必须预先设定这些固定的采样率。当上层应用提供的采样率与这些预设值不匹配时,需要通过重采样(resample)技术来调整采样率,以保证音频数据的正确处理和传输。本文将详细探讨FFMpeg在音频处理中的基础理论及重采样技术的应用。 ... [详细]
  • oracle c3p0 dword 60,web_day10 dbcp c3p0 dbutils
    createdatabasemydbcharactersetutf8;alertdatabasemydbcharactersetutf8;1.自定义连接池为了不去经常创建连接和释放 ... [详细]
  • 字节流(InputStream和OutputStream),字节流读写文件,字节流的缓冲区,字节缓冲流
    字节流抽象类InputStream和OutputStream是字节流的顶级父类所有的字节输入流都继承自InputStream,所有的输出流都继承子OutputStreamInput ... [详细]
  • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • 在分析Android的Audio系统时,我们对mpAudioPolicy->get_input进行了详细探讨,发现其背后涉及的机制相当复杂。本文将详细介绍这一过程及其背后的实现细节。 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 在HTML5应用中,Accordion(手风琴,又称抽屉)效果因其独特的展开和折叠样式而广泛使用。本文探讨了三种不同的Accordion交互效果,通过层次结构优化信息展示和页面布局,提升用户体验。这些效果不仅增强了视觉效果,还提高了内容的可访问性和互动性。 ... [详细]
  • 基于OpenCV的图像拼接技术实践与示例代码解析
    图像拼接技术在全景摄影中具有广泛应用,如手机全景拍摄功能,通过将多张照片根据其关联信息合成为一张完整图像。本文详细探讨了使用Python和OpenCV库实现图像拼接的具体方法,并提供了示例代码解析,帮助读者深入理解该技术的实现过程。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
author-avatar
烦了_12664
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有