AVAssetReader 采样率
Posted
技术标签:
【中文标题】AVAssetReader 采样率【英文标题】:AVAssetReader samplerate 【发布时间】:2011-11-22 21:46:43 【问题描述】:如何使用 AVAssetReader 计算从 iPod 库中获取的歌曲的采样率。我想我可以很容易地获得样本的数量,(无论如何我已经成功地阅读了样本..),但我不知道在哪里可以获得歌曲的长度(以秒为单位)。
注意MPMediaItem没有Media Item的长度属性,或许有其他方法可以通过这个API获取item的长度?
【问题讨论】:
【参考方案1】:您可以使用MPMediaItem
来获取长度。查看MPMediaItemPropertyPlaybackDuration
属性键。文档状态:
媒体项目的播放时长。 Value 是一个 NSNumber 对象,以 NSTimeInterval 表示持续时间(以秒为单位)。
【讨论】:
不知道我怎么会错过那个,检查了文档。不管怎么说,还是要谢谢你。然而,事实证明我不能以这种方式使用 AVAssetReader 来达到我的目的,我只知道之后的样本量,这为时已晚。不幸的是,将 iPod 文件导出到我的文档文件夹时,ExtAudioFile 在尝试读取声音文件的属性时返回错误。 查看音频文件服务 API。我认为您可以将AudioFileGetProperty()
函数与kAudioFilePropertyBitRate
键一起使用。
见:***.com/questions/8235572/… -- 我不知道它为什么会失败【参考方案2】:
如果您仍然对采样率感到疑惑,可以这样做:
获得您感兴趣的 AVAssetTrack
后,您可以获取 AudiostreamBasicDescription
并检查它以找到原始采样率。
AVAssetTrack * track = ...;
CMAudioFormatDescriptionRef trackDescription = static_cast<CMAudioFormatDescriptionRef>([track.formatDescriptions firstObject]);
const AudioStreamBasicDescription * trackAsbd = CMAudioFormatDescriptionGetStreamBasicDescription(trackDescription);
double sampleRate = trackAsbd->mSampleRate;
省略错误检查...
【讨论】:
以上是关于AVAssetReader 采样率的主要内容,如果未能解决你的问题,请参考以下文章