AVAudioPlayer 在使用 M4A 文件初始化时抛出。 (OSStatus 错误 2003334207。)
Posted
技术标签:
【中文标题】AVAudioPlayer 在使用 M4A 文件初始化时抛出。 (OSStatus 错误 2003334207。)【英文标题】:AVAudioPlayer throws when initializing with M4A file. (OSStatus error 2003334207.) 【发布时间】:2019-07-22 19:40:38 【问题描述】:我正在尝试从包含 M4A 文件的 URL 初始化和播放 AVAudioPlayer
。文件如下:
https://audio-ssl.itunes.apple.com/apple-assets-us-std-000001/AudioPreview123/v4/e8/04/59/e80459fb-9429-3323-4f43-ce12d5df1be5/mzaf_5785529815715338950.plus.aac.p.m4a
这是我用来初始化所说的 AVAudioPlayer 的代码:
var player: AVAudioPlayer!
let preview = "https://audio-ssl.itunes.apple.com/apple-assets-us-std-000001/AudioPreview123/v4/e8/04/59/e80459fb-9429-3323-4f43-ce12d5df1be5/mzaf_5785529815715338950.plus.aac.p.m4a"
func loadAudio()
do
self.player = try AVAudioPlayer(contentsOf: URL(string: preview!)!, fileTypeHint: AVFileType.m4a.rawValue)
self.player.play()
catch let error
print("Error:", error.localizedDescription)
@IBAction func buttonPressed(_ sender: Any)
loadAudio()
当按下与名为 buttonPressed(sender:)
的 IBAction
关联的按钮时,我收到以下错误:
The operation couldn’t be completed. (OSStatus error 2003334207.)
我已尝试对有关此错误的类似问题进行故障排除,但似乎没有一个可以解决我的问题。
编辑:
我尝试用AVPlayer
做类似的事情,虽然它没有抛出错误,但文件根本没有播放。下面是一些示例代码:
var avPlayer: AVPlayer!
let preview = "https://audio-ssl.itunes.apple.com/apple-assets-us-std-000001/AudioPreview123/v4/e8/04/59/e80459fb-9429-3323-4f43-ce12d5df1be5/mzaf_5785529815715338950.plus.aac.p.m4a"
func loadAudio()
if let url = NSURL(string: preview!)
self.avPlayer = AVPlayer(url: url as URL)
self.avPlayer.volume = 1.0
self.avPlayer.play()
@IBAction func buttonPressed(_ sender: Any)
loadAudio()
【问题讨论】:
AVAudioPlayer 不播放远程文件。你想要一个 AVPlayer。 我尝试用AVPlayer
做类似的事情,当我打电话给player.play()
时播放器根本没有玩。如果有用,我可以添加一些代码。 @马特
我不明白为什么会有用。我将您的代码更改为使用 AVPlayer,它工作正常。
【参考方案1】:
AVAudioPlayers 不播放远程内容。使用 AVPlayer。
var player: AVPlayer!
let preview = ....
func loadAudio()
self.player = AVPlayer(url:URL(string: preview)!)
self.player.play()
【讨论】:
查看我所做的编辑。我尝试使用AVPlayer
,但音频根本无法播放。需要注意的是,我实际上是在viewDidLoad()
中调用这个函数,我只是将它放在IBAction
中,以简化此示例。
我的代码在模拟器中运行,在您提供的 URL 处播放文件。我点击按钮,噪音播放。这就是要知道的全部内容。
感谢您的意见。如果我能让这个工作正常,我会告诉你的。【参考方案2】:
我觉得自己像个白痴。运行此代码时,我的手机处于“静音模式”。每this answer我需要添加
do
try AVAudiosession.sharedInstance().setCategory(AVAudioSession.Category.playback)
catch
// report for an error
在真正从 AVPlayer 播放之前。
我没有想到这个问题的原因是,在我的 iPhone 控制中心查看音乐管理器时,没有任何迹象表明正在播放音频。 播放音频并不意味着播放控件由设备的控制中心处理。
【讨论】:
以上是关于AVAudioPlayer 在使用 M4A 文件初始化时抛出。 (OSStatus 错误 2003334207。)的主要内容,如果未能解决你的问题,请参考以下文章
NSBundle 在尝试实例化 AVAudioPlayer 时找到 mp3 文件但没有找到 m4a
AVAudioPlayer initWithContentsOfURL 为 AAC/M4A 文件返回 nil
Swift AVAudioPlayer 不会播放用 AVAudioRecorder 录制的音频