AVPlayer Live流如何获得音频电平计量的功率

时间:2016-10-09 19:03:56

标签: ios iphone audio avaudioplayer avplayer

我正在尝试在我的应用中显示一个使用AVPlayer流式传输实时音频流的电表图。

我知道AVAudioPlayer有一种方法: Trying to understand AVAudioPlayer and audio level metering

使用mozilla/DigiCert_High_Assurance_EV_Root_CA.crt

但AVAudioPlayer对音频流不起作用。

AVPlayer有类似的东西吗?或者还有其他方法可以从AVPlayer获得功率值吗?

代码:

peakPowerForChannel

1 个答案:

答案 0 :(得分:2)

通常,您可以使用播放器项目上的AVPlayer来获取MTAudioProcessingTap的音频样本,但是您的资产可以通过

来抵制
  1. tracks上的AVURLAsset财产永远不可用
  2. 当您观察并将水龙头连接到playerItem.tracks assetTrack时,没有给您回电。
  3. 我从未见过为什么这对远程mp3m3u8流不起作用的好解释,而且令人讨厌的是,它确实适用于其他远程资产类型,比如aac。不公平地,在视频方面,AVPlayerItemVideoOutput似乎适用于所有类型的资产(除了DRM问题)!

    那么这会让你离开?一种方法是使用AudioQueue从您解码和播放mp3数据的位置流式传输mp3数据, 使用前面提到的MTAudioProcessingTap计算峰值功率。我们也会想到涉及AudioConverter / AudioUnitAVAudioConverter / AVAudioEngine的解决方案。

    如果仅仅更换单个属性听起来太多工作,您可以查看预先制作的解决方案,例如StreamingKitFreeStreamer,然后计算功率。你可能会找到一个为你计算能量的库。如果没有,您可以使用this formula

    计算peakPowerForChannel