关于iOS中用AudioFile相关API解码或播放AAC_HE_V2时只能识别单声首22.05k采样率的问题

关于iOS中用AudioFile相关API解码或播放AAC_HE_V2时只能识别单声首22.05k采样率的问题

在官方AQPlayer Demo 和 aqofflinerender中,都用了AudioFile相关的API来读取音频文件,大部分情况下,都是没问题的。但在读取或播放AAC_HE_V2格式音频时,会出现只能把原本双声道44100采样率的文件当成单声道22050采样来读取的问题。

在调用AudioFileGetProperty用

kAudioFilePropertyDataFormat参数获取文件格式时,就只能识别到单声道22050采样了。

是iOS不支持AAC_HE_V2解码吗?不可能的,这种格式是苹果官方主推过的音频格式,iOS没理由不支持。其实,问题就出在这个kAudioFilePropertyDataFormat上,这个API只会获取到最低级别的编码层级。我们知道,AAC_HE_V2编码包括了三层格式,(拿源文件44100双声道举列)第一层:只支持22050,单声道,第二层,支持44100,单声道,第三层支持44100,双声道。

在这种情况下,用kAudioFilePropertyDataFormat就取不到第三层的格式了,这时,就需要用另一个接口参数kAudioFilePropertyFormatList来获取第三层的格式。

封装了一个获取最佳播放格式的代码详见

http://www.mingjianhua.com/post/iOSAudioFileDecodeAAC_HE_V2.html

时间: 2024-10-06 02:15:17

关于iOS中用AudioFile相关API解码或播放AAC_HE_V2时只能识别单声首22.05k采样率的问题的相关文章

【iOS开发】解决“点击MPMoviePlayerController播放视频时,出现一个黑屏闪屏问题”

当点击某按钮播放视频时,如果在按钮触发函数时alloc MPMoviePlayerController对象,同时加载资源文件,因为加载资源文件也需要时间,这时会有一个短暂的黑色闪屏,这点体验很不好,有一个好的解决方案是,提前alloc预加载好该MoviePlayer对象,点击按钮时直接调用play. 预加载相关代码: //预加载视频,避免出现黑屏 NSString *videoPath=[[NSBundle mainBundle]pathForResource:@"startVideo"

QQ音乐的各种相关API

QQ音乐的各种相关API 分类: oc2014-01-29 15:34 2676人阅读 评论(2) 收藏 举报 基本上论坛里做在线音乐的都在用百度的API,进来发现百度的API不仅歌曲的质量不可以保证,而且返回信息里面只有URL,没有一些相关的属性信息.所以就想方设法弄到了QQ音乐的API 已经用xCode尝试过并且可行的API:★搜索音乐(歌词)http://shopcgi.qqmusic.qq.com/fcgi-bin/shopsearch.fcg?value=歌曲名&artist=歌手名&a

php后台对接ios,安卓,API接口设计和实践完全攻略,涨薪必备技能

2016年12月29日13:45:27 关于接口设计要说的东西很多,可能写一个系列都可以,vsd图都得画很多张,但是由于个人时间和精力有限,所有有些东西后面再补充 说道接口设计第一反应就是restful api 请明白一点,这个只是设计指导思想,也就是设计风格 ,比如你需要遵循这些原则 原则条件REST 指的是一组架构约束条件和原则.满足这些约束条件和原则的应用程序或设计就是 RESTful.Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的.从客户端到服务

iOS OpenGLES 框架相关 24 篇文档排序整理

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. OpenGLES Use a compact, efficient subset of the OpenGL API for 2D and 3D

细数AutoLayout以来UIView和UIViewController新增的相关API<转写>

细数AutoLayout以来UIView和UIViewController新增的相关API – UIViewController篇 UILayoutSupport @property(nonatomic,readonly,retain) id<UILayoutSupport> topLayoutGuide NS_AVAILABLE_IOS(7_0); @property(nonatomic,readonly,retain) id<UILayoutSupport> bottomLay

AutoLayout以来UIView和UIViewController新增的相关API

http://www.itjhwd.com/autolayout-uiview-uiviewcontroller-api/ UILayoutSupport Java 从iOS 7以来,当我们的视图控制器结构中有NavigationBar,TabBar或者ToolBar的时候,它们的translucent属性的默认值改为 了YES,并且当前的ViewController的高度会是整个屏幕的高度.(比如一个场景:拖动TableView的时候,上面的 NavigationBar能够透过去看到Table

细数AutoLayout以来UIView和UIViewController新增的相关API

UILayoutSupport 1 @property(nonatomic,readonly,retain) id topLayoutGuide NS_AVAILABLE_IOS(7_0); 2 @property(nonatomic,readonly,retain) id bottomLayoutGuide NS_AVAILABLE_IOS(7_0); 3 4 @protocol UILayoutSupport 5 @property(nonatomic,readonly) CGFloat l

iOS 火星坐标相关整理及解决方案汇总(转)

这几天在处理定位相关的代码,彻彻底底的被火星坐标恶心到了. 恶心列表 从 CLLocationManager 取出来的经纬度放到 mapView 上显示,是错的! 从 CLLocationManager 取出来的经纬度去 Google Maps API 做逆地址解析,当然是错的! 从 MKMapView 取出来的经纬度去 Google Maps API 做逆地址解析终于对了.去百度地图API做逆地址解析,依旧是错的! 从上面两处取的经纬度放到百度地图上显示都是错的!错的!的! 当时我还不知道火星

OC中并发编程的相关API和面临的挑战

OC中并发编程的相关API和面临的挑战(1) 小引 http://www.objc.io/站点主要以杂志的形式,深入挖掘在OC中的最佳编程实践和高级技术,每个月探讨一个主题,每个主题都会有几篇相关的文章出炉,2013年7月份的主题是并发编程,今天挑选其中的第2篇文章(Concurrent Programming: APIs and Challenges)进行翻译,与大家分享一下主要内容.由于内容比较多,我将分两部分翻译(API和难点)完成,翻译中,如有错误,还请指正. 目录 1.介绍 2.OS