如何计算使用AVAssetReader从iPod库中获取的歌曲的采样率。我认为我可以很容易地获得样本数量(我已经成功地读取了样本..),但我不知道我可以在哪里获得歌曲的长度(以秒为单位)。AVAssetReader采样率
请注意,MPMediaItem没有属性的媒体项目的长度,也许有另一种方式来通过此API来获取该项目的长度?
如何计算使用AVAssetReader从iPod库中获取的歌曲的采样率。我认为我可以很容易地获得样本数量(我已经成功地读取了样本..),但我不知道我可以在哪里获得歌曲的长度(以秒为单位)。AVAssetReader采样率
请注意,MPMediaItem没有属性的媒体项目的长度,也许有另一种方式来通过此API来获取该项目的长度?
您可以使用MPMediaItem
来获得长度。看看MPMediaItemPropertyPlaybackDuration
属性键。文档状态:
媒体项目的播放持续时间。 Value是一个NSNumber对象,表示以NSTimeInterval为单位的持续时间(以秒为单位)。
如果你实际上仍不清楚这个采样率,它是像这样做: 一旦你有你AVAssetTrack
你有兴趣,你可以得到AudioStreamBasicDescription
和检查,要找到原来的采样率。检查省略
AVAssetTrack * track = ...;
CMAudioFormatDescriptionRef trackDescription = static_cast<CMAudioFormatDescriptionRef>([track.formatDescriptions firstObject]);
const AudioStreamBasicDescription * trackAsbd = CMAudioFormatDescriptionGetStreamBasicDescription(trackDescription);
double sampleRate = trackAsbd->mSampleRate;
错误...
不知道我怎么会错过了一个,查了资料。不管怎么说,还是要谢谢你。但事实证明,我不能使用AVAssetReader来达到我的目的,我只知道样本数量,这已经太晚了。不幸的是,当将iPod文件导出到我的文档文件夹时,ExtAudioFile在尝试读取声音文件的属性时返回错误。 –
查看音频文件服务API。我认为你可以使用'AudioFileGetProperty()'函数和'kAudioFilePropertyBitRate'键。 –
请参阅:http://stackoverflow.com/questions/8235572/extaudiofilegetproperty-failing - 我不完全知道为什么它的失败 –