如何計算使用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 - 我不完全知道爲什麼它的失敗 –