同时播放两首受 DRM 保护的不同音量的歌曲

Play two DRM-protected songs at the same time with different volumes

我正在尝试用两种不同的 MPMusicPlayerControllers 在不同音量下创建效果。我可以创建一个 MPMusicPlayerController 并设置它的音量

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()

但现在 MPMusicPlayerController.volume is deprecated,我似乎无法找到一种方法来创建两个具有不同音量的 MPMusicPlayerControllers...我正在寻找这样的东西

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)?欢迎 Hacky 解决方法。

我已联系 Apple,他们确认目前无法执行此操作。我提交了一个功能建议,希望我们将来能够看到它。

我的功能建议建议使用全局处理程序和委托,允许应用向处理程序发出命令(类似于 MPDRMMusicHandler.shared),然后通过委托接收对这些命令的响应 MPDRMMusicDelegate,分配给音乐处理程序会话 MPDRMMusicHandler

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