2017-08-06 70 views
1

我试图用不同的音量创建两个不同的MPMusicPlayerControllers效果。我能然而现在MPMusicPlayerController.volume is deprecated,我似乎无法找出一种方法来创建两个MPMusicPlayerControllers不同的卷创建一个MPMusicPlayerController和设置的那用不同的音量同时播放两首受DRM保护的歌曲

let musicPlayerController = MPMusicPlayerController.systemMusicPlayer 

let volumeController = MPVolumeView(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) 
self.view.addSubview(volumeController) 

// get the UISlider for the MPVolumeView 
let volumeSlider = volumeController.volumeSlider 
volumeSlider.value = 0.5 

musicPlayerController.play() 

体积......我期待这样的事情

let musicPlayerController = MPMusicPlayerController() 
musicPlayerController.volume = 0.5 
//set the song 
musicPlayerController.play() 

let otherPlayerController = MPMusicPlayerController() 
otherPlayerController = 0.5 
//set the song 
otherPlayerController.play() 

我无法使用AVAudioPlayer,因为它有DRM保护的文件的限制。基本上我试图同时播放两个不同音量的受DRM保护的音乐文件。

有没有什么办法可以在iOS 10或11中以不同的体积创建两个不同的MPMusicPlayerControllers(或者具有相同的效果)(就像在相同的MPMusicPlayerController上以不同的音量播放两首歌曲一样)?哈克解决方法是受欢迎的。

+0

我认为systemMusicPlayer只是一个单身系统范围音乐播放器的参考。尝试appMusicPlayer,看看你是否得到不同的结果。 让player01 = MPMusicPlayerController.applicationMusicPlayer() 让player02 = MPMusicPlayerController.applicationMusicPlayer() – solenoid

+0

@solenoid感谢您的回应!我试过这样做,但无法弄清楚如何改变两个独立的音量(我在后面的问题中提到过,但可能应该将它包含在标题中 - 我只是更新了帖子) – Jojodmo

+0

Ahh volume - 我对那一个有怀疑。出于好奇,AVPlayer不能播放哪些音乐?在我的应用程序中,我只播放本地音乐,只有带旧式DRM的歌曲不会加载。 – solenoid

回答

1

我已经联系了Apple,他们确认目前没有办法做到这一点。我提出了一项功能建议,希望将来能够看到这一点。使用全局处理程序和委托,允许应用程序做出处理程序指令(像MPDRMMusicHandler.shared

我有建议提出,然后通过委托MPDRMMusicDelegate,分配给乐曲的处理程序会接收到这些命令的响应MPDRMMusicHandler

应用程序无法访问未加密的原始音乐数据,因为应用程序只能发送要播放的音乐请求并设置其特征。然后,委托函数将在对这些命令的响应中被调用 - 指示命令是否成功或者如果失败则提供错误。受DRM保护的音乐的解密将全部由iOS处理,与应用程序分离(或至少在私人图书馆开发人员“无法”访问)。