我正在使用Finch聲音引擎從AVAudioPlayer切換到OpenAL。我需要做計量,即得到平均峯值水平。 Finch聲音引擎不提供此功能,而且我對OpenAL完全陌生。我怎樣才能做到這一點?任何例子將非常感激。如何在OpenAL中測量/平均峯值功率水平?
1
A
回答
2
我假設您正在尋找AVAudioPlayer的peakPowerForChannel:
方法的簡單替換方法。不幸的是,沒有。你將不得不推出自己的。
OpenAL「聲音」是「緩衝區」(您的樣本數據,加載到內存中)和「源代碼」的組合,代表您想要應用於樣本數據的屬性。
OpenAL播放的簡單方法是將整個文件加載到內存中,然後在一次調用中播放整個文件。但是,您可以使用NSInputStream將一段PCM樣本數據從文件讀入OpenAL緩衝區,使用alBufferData()使用您自己的函數計算峯值功率,使用您的源播放該塊,然後重複,直到EOF 。
我知道您打算使用Finch,但您應該給AudioQueues一個真正的近距離查看(如果測量對您來說是一個關鍵功能)。它更適合這種類型的應用程序。特別是,kAudioQueueProperty_CurrentLevelMeterDB屬性將爲您提供峯值RMS(mPeakPower)或平均RMS水平(mAveragePower),您可以隨時隨地閱讀它們。
祝你好運,快樂的編碼!
有些資源可能會有所幫助:
- http://kcat.strangesoft.net/openal-tutorial.html
- http://connect.creativelabs.com/openal/Documentation/OpenAL_Programmers_Guide.pdf
- http://www.hydrogenaudio.org/forums/index.php?showtopic=78578
- http://developer.apple.com/mac/library/documentation/MusicAudio/Reference/AudioQueueReference/Reference/reference.html
相關問題
- 1. AVAudioRecorder:峯值和平均功率
- 2. 測量Simulink中的平均直流功率
- 3. 斷言測試的平均水平
- 4. Ruby on Rails平均水平?
- 5. MySql多種平均水平
- 6. SQL的平均水平
- 7. 平均學校水平
- 8. 從頻譜功率水平恢復RMS和/或峯值(FFT輸出)
- 9. 如何在因子水平內計算矢量的加權平均值?
- 10. 如何使用秒錶來測量平均循環迭代的平均值
- 11. 在dygraph中顯示平均值的水平線
- 12. SQL查找組出席率低於平均水平
- 13. 最大平均值,最小平均值和平均值
- 14. 工作人員的平均工資超過平均水平,但低於經理的平均水平? (SQL)
- 15. 平均功能
- 16. 找到平均值(平均)在C++
- 17. 如何測量GA自定義變量的平均值?
- 18. 性能規劃 - 以每秒平均請求量和猜測峯值爲例
- 19. 查找最小值,最大值,平均值,賠率和平均值。 Java
- 20. 在Python中關閉峯值的平均指數
- 21. 平均值的平均值Excel公式
- 22. 計算平均值的平均值
- 23. 在Matlab中測試水平平穩性
- 24. 如何計算MS reportviewer/rdlc中的平均計算平均值?
- 25. matlab中如何平均時間序列對象的平均值?
- 26. 如何統計mySQL中高於平均水平的行?
- 27. 移動增量平均值
- 28. 如何獲得所選列的平均值(平均值)
- 29. C# - 如何檢測音頻混音器的聲音峯值水平?
- 30. Django的平均水平 - 每星期
唉,我希望避免AudioQueues。永遠不可能真正理解它。但是,感謝您的回覆,我找不到任何信息! – Thaurin 2010-04-03 14:17:09