Ios 带可视化工具的AVPlayer
我需要为流式URL(m3u8格式)创建一个音频播放器。我用AVPlayer创建了音乐播放器。但我需要显示流歌曲的可视化工具。我尝试过不同的解决方案,但没有找到任何有效的例子 我已经使用AVAudioPlayer(averagePower)创建了visualizer,但它不支持流式URL 有关于显示AVPlayer的可视化工具的帮助吗?提前谢谢 我也尝试过使用大多数人建议的MYAudioTapProcessor,但对于流式URL,曲目总是返回null 在项目中添加了MYAudioTapProcessor.h和MYAudioTapProcessor.mIos 带可视化工具的AVPlayer,ios,swift,swift3,avplayer,Ios,Swift,Swift3,Avplayer,我需要为流式URL(m3u8格式)创建一个音频播放器。我用AVPlayer创建了音乐播放器。但我需要显示流歌曲的可视化工具。我尝试过不同的解决方案,但没有找到任何有效的例子 我已经使用AVAudioPlayer(averagePower)创建了visualizer,但它不支持流式URL 有关于显示AVPlayer的可视化工具的帮助吗?提前谢谢 我也尝试过使用大多数人建议的MYAudioTapProcessor,但对于流式URL,曲目总是返回null 在项目中添加了MYAudioTapProces
//Initialization of player
let playerItem = AVPlayerItem( url:NSURL( string:"https://bitdash-a.akamaihd.net/content/sintel/hls/playlist.m3u8" ) as! URL )
let audioPlayer: AVPlayer = AVPlayer(playerItem:playerItem)
//Added periodic time observer
audioPlayer!.addPeriodicTimeObserver(forInterval: CMTimeMakeWithSeconds(1, 1), queue: DispatchQueue.main) { (CMTime) -> Void in
if audioPlayer!.currentItem?.status == .readyToPlay
{
if let playerItem: AVPlayerItem = audioPlayer!.currentItem {
print(playerItem.asset.tracks.count)
if (playerItem.asset.tracks) != nil {
self.tapProcessor = MYAudioTapProcessor(avPlayerItem: playerItem)
playerItem.audioMix = self.tapProcessor.audioMix
self.tapProcessor.delegate = self
}
}
}
}
//Delegate callback method for MYAudioTapProcessor
func audioTabProcessor(_ audioTabProcessor: MYAudioTapProcessor!, hasNewLeftChannelValue leftChannelValue: Float, rightChannelValue: Float) {
print("volume: \(leftChannelValue) : \(rightChannelValue)")
volumeSlider.value = leftChannelValue
}
还尝试添加“轨迹”观察者
playerItem.addObserver(self, forKeyPath: "tracks", options: NSKeyValueObservingOptions.new, context: nil);
现在,如果播放mp3文件,回调方法调用,但对于m3u8,回调方法不调用。m3u8 URL失败的主要原因是它始终显示曲目数组计数为零,而对于mp3文件,曲目数组只有一项。您无法通过AVPLayer获取HLS曲目。播放媒体时,您应该使用渐进式下载或本地文件来获取音频曲目。这听起来是一项相当艰巨的任务。你能分享一下到目前为止你已经完成的工作吗?也许有人可以提供一些指导?@Davewston我已经添加了一些代码。请让我知道是否有任何解决问题的方法。谢谢。@Girish,有办法吗?@Girish,你找到解决办法了吗?@adev还没有找到任何解决办法。目前,我们跳过了可视化功能。