来自 url 的 Swift.Streaming 音频,错误代码 -999 “已取消”

Posted

技术标签:

【中文标题】来自 url 的 Swift.Streaming 音频,错误代码 -999 “已取消”【英文标题】:Swift.Streaming audio from url with error code -999 "cancelled" 【发布时间】:2019-05-29 07:54:19 【问题描述】:

这是我的代码:

var playering = AVPlayer()


private func streamAudio(url: String) 
    guard let url = URL(string: url) else return
    let playerItems = AVPlayerItem(url: url)
    ReportVC.playering = AVPlayer(playerItem: playerItems)
    ReportVC.playering.play()

我在 viewDidLoad() 方法中调用 streamAudio,如下所示:

self.streamAudio(url: "https://stage.careandcarers.com/file/get/0b710400-4454-4a46-9ed5-8a542f046ed8.m4a")

但我在控制台中收到此错误:

2019-05-29 12:19:32.940076+0430 CC[13305:463451] 任务 . 加载失败,错误域=NSURLErrorDomain Code=-999“取消” UserInfo=NSErrorFailingURLStringKey=https://stage.careandcarers.com/file/get/0b710400-4454-4a46-9ed5-8a542f046ed8.m4a, NSErrorFailingURLKey=https://stage.careandcarers.com/file/get/0b710400-4454-4a46-9ed5-8a542f046ed8.m4a, _NSURLErrorRelatedURLSessionTaskErrorKey=( “本地数据任务 .” ), _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask ., NSLocalizedDescription=cancelled [-999] 2019-05-29 12:19:32.943557+0430 CC[13305:460502] 任务 . 完成错误 - 代码:-999 2019-05-29 12:19:32.943604+0430 CC[13305:461457] TIC 读取状态 [5:0x0]: 1:57

有什么问题?

【问题讨论】:

我在操场上测试过,它似乎可以工作。发生此代码= -999 的情况是在处理异步加载时。你能分享ReportVC代码吗?因为您使用的是您在顶部声明的播放器 ReportVC 很大而且很乱。你想看哪一部分? 我想看看您如何在此处声明 playering,因为在下载音频内容之前可能会释放某些内容。我尝试在流式传输音频时在本地声明 playering 并且它可以工作。所以尝试在 streamAudio 中声明一个新播放器并告诉我它是否有效 我将网址更改为示例 MP3 网址,它工作得很好。有没有可能是 m4a 格式的问题? 【参考方案1】:

试试看:

func streamPlay(streamUrl : string)
let playerItem = AVPlayerItem( url:NSURL( string: streamUrl )! as URL )
        player = AVPlayer(playerItem:playerItem)
        player!.rate = 1.0;
        //isplay is a bool variable that indicate your stream playing is in process or not(default value = false)
        if isPlay

            player!.pause()
            //playDemo is button that you use to stream play
            playDemo!.setImage(UIImage(named: "playBtn"), for: UIControl.State.normal)
            playDemo!.setTitle("Pause", for: UIControl.State.normal)
            isPlay = false

        else

            player!.play()
            playDemo!.setImage(UIImage(named: "media_pause"), for: UIControl.State.normal)
            playDemo!.setTitle("play", for: UIControl.State.normal)
            isPlay = true
        

在你看来DidLoad:

 let url = "https://stage.careandcarers.com/file/get/0b710400-4454-4a46-9ed5-8a542f046ed8.m4a"
 streamPlay(streamUrl : url)

【讨论】:

同样的错误,我认为我的代码很好。还有其他问题。 我将网址更改为示例 MP3 网址,它工作得很好。有没有可能是 m4a 格式的问题? 也许如果它们被编码为 AMR_NB,它们需要被编码为 AAC。

以上是关于来自 url 的 Swift.Streaming 音频,错误代码 -999 “已取消”的主要内容,如果未能解决你的问题,请参考以下文章

无法在android的videoview中播放来自url的视频如何在videoview中播放来自URL的视频?

来自 C# 中的基本 URL + 相对 URL 的绝对 URL

来自 URL 的正则表达式 URL 路径

来自外部 url 的 wordpress 特色图片,无需下载

不重定向来自移动设备的某些 URL [重复]

来自 Objective-C 中 URL 的数组