gpt4 book ai didi

swift - 使用 AVAudioPlayer 播放从 HTTP POST 请求接收到的 NSData

转载 作者:行者123 更新时间:2023-11-30 13:30:28 25 4
gpt4 key购买 nike

下面是实现本地 Web 服务器的 POST 处理程序的代码。它以 NSData( (request as! GCDWebServerURLEncodedFormRequest).data ) 的形式在服务器上下载从客户端设备上传的歌曲。

 webServer.addHandlerForMethod("POST",path:"/", requestClass: GCDWebServerURLEncodedFormRequest.self, processBlock:
{request in
let html: String = String(format: "<html><body><p>hi</p></body></html>")
NSLog("Request Args %hhd bkmbk", (request as! GCDWebServerURLEncodedFormRequest).hasBody())

NSLog("Request Args %@ bkmbk", (request as! GCDWebServerURLEncodedFormRequest).contentType)

通过该方法,服务器端成功接收到了歌曲文件的NSData。接收到的数据大小与实际发送的文件大小相对应。 当尝试播放收到的歌曲时,它只播放其中的一部分,然后停止。但是,整个应用程序不会崩溃。

 do{
print((request as! GCDWebServerURLEncodedFormRequest).data.length)
let player = try AVAudioPlayer(data: (request as! GCDWebServerURLEncodedFormRequest).data, fileTypeHint: "mp3")
player.prepareToPlay()
player.play()
}catch{
// ...
}
return GCDWebServerDataResponse(HTML:html)
})

以上所有方法均在 AppDelegate.swift 中执行,并在后台线程中执行。非常感谢任何解决该问题的帮助。谢谢..!!

最佳答案

最有可能的问题是 AVAudioPlayer 实例没有保留,因为它位于局部变量中。当调用return GCDWebServerDataResponse(HTML:html)时,局部变量和播放器都会被销毁。

关于swift - 使用 AVAudioPlayer 播放从 HTTP POST 请求接收到的 NSData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36617008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com