【问题标题】:How i can play [UInt8] audio stream? [closed]我如何播放 [UInt8] 音频流? [关闭]
【发布时间】:2015-08-04 16:06:14
【问题描述】:

我通过 TCP / IP 连接到服务器并接收 [UInt8]。我知道那是音频。如何在 iPhone 上播放流?

@IBAction func connectAndListen(sender: AnyObject) {
    var client:TCPClient = TCPClient(addr: "80.233.248.96", port: 6969)
    var (success,errmsg)=client.connect(timeout: 1)
    if success{
        while (success){
            var (success,errmsg)=client.send(str:"GET / HTTP/1.0\n\n" )
            if success{
                var data = client.read(1024*10)
                if let d = data{

                    var endMarker = NSMutableData(bytes: d, length: d.count)
                    println(endMarker)
                    self.audioPlayer = AVAudioPlayer(data: endMarker, error: nil)

                    self.audioPlayer?.prepareToPlay()
                    self.audioPlayer?.play()

                }
            }else{
                println(errmsg)
                break
            }
        }
    }else{
        println(errmsg)
    }
}

我的崩溃:

致命错误:在展开可选值时意外发现 nil

在这个 self.audioPlayer!.prepareToPlay() Print screen my crash

【问题讨论】:

  • 您需要提供有关崩溃的详细信息。哪一行以及完整的错误信息是什么?
  • @rmaddy 我在 player.prepareToPlay() 和控制台日志中的崩溃:(致命错误:在展开可选值时意外发现 nil)
  • 为什么要从问题中删除所有代码?您应该放回代码并添加有关崩溃的详细信息。那么您的问题可能会重新打开。
  • @rmaddy 回来我的代码并链接打印屏幕

标签: ios objective-c iphone swift core-audio


【解决方案1】:
  1. 从流中的字节创建一个NSData 对象。
  2. 使用initWithData:error: 方法创建AVAudioPlayer
  3. 使用AVAudioPlayer 播放方法播放音频。

我无法确切告诉您如何创建 NSData 对象,因为我不知道您是如何获得字节流的,但 Apple 文档中详细记录了 NSData 类。

【讨论】:

  • @michael-l 在我的问题中添加更多详细信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-22
  • 2019-05-05
  • 1970-01-01
相关资源
最近更新 更多