IOS 8 Swift AVAudioPlayer播放远程音频(wowza服务器)

Dav*_*ton 16 avaudioplayer ios swift ios8

我不是IOS程序员,但我需要一个简单的应用程序来播放来自wowza服务器的音频流.这是我的代码,我没有错误但也没有音频.任何指导或帮助?

    import UIKit
    import AVFoundation

    class ViewController: UIViewController {

         var player = AVAudioPlayer()

        override func viewDidLoad() {
            super.viewDidLoad()

            var fileURL: NSURL = NSURL(string: "http://url----.com/playlist.m3u8")

            var error:NSError?
            player = AVAudioPlayer(contentsOfURL: fileURL, error: &error)

            if player.prepareToPlay() && player.play(){
                println("yes")
            } else {
                println("no")
            }
        }
Run Code Online (Sandbox Code Playgroud)

小智 23

这对我有用:

var player = AVPlayer()

func configureView() {

    let url = "http://stream.your.url.com"
    let playerItem = AVPlayerItem( URL:NSURL( string:url ) )
    player = AVPlayer(playerItem:playerItem)
    player.rate = 1.0;
    player.play()

}
Run Code Online (Sandbox Code Playgroud)

  • 它也可以直接使用这样的url创建'AVPlayer':'avPlayer = AVPlayer(URL:nsUrl)'如果你创建avPlayer作为本地变量,那么你应该做的就是创建avPlayer作为实例变量它对我不起作用. (5认同)

Jso*_*ras 10

Swift 2.0iOS 9中

do {
    let url = "http://yourdomain.com/file.mp3"
    let fileURL = NSURL(string:url)
    let soundData = NSData(contentsOfURL:fileURL!)
    self.audioPlayer = try AVAudioPlayer(data: soundData!)
    audioPlayer.prepareToPlay()
    audioPlayer.volume = 1.0
    audioPlayer.delegate = self
    audioPlayer.play()
} catch {
    print("Error getting the audio file")
}
Run Code Online (Sandbox Code Playgroud)


Bil*_*ver 6

这个 anwser 帮助了我:AVAudioPlayer with external URL to *.m4p

我不得不将 thr URL 转换为 NSData:

func musicFromURL(streamURL: String) {
    guard let fileURL = URL(string:streamURL) else { return  }
    do {
        let soundData = try Data(contentsOf: fileURL)
        self.audioPlayer = try AVAudioPlayer(data: soundData)
        guard let audioPlayer = audioPlayer else { return }
        audioPlayer.prepareToPlay()
        audioPlayer.volume = 1.0
        audioPlayer.play()
    } catch {
        print(error)
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 请记住,此选项涉及下载 mp3 然后播放。使用 AVPlayer,您实际上可以流式传输它。 (3认同)

Rap*_*tor 0

要检查 Swift 中的错误,请使用:

if let errorDetails = error {
    println("Error creating player: \(errorDetails.localizedDescription)")
} else {
    if player.prepareToPlay() && player.play(){
        println("yes")
    } else {
        println("no")
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 错误“2003334207”意味着“AVAudioPlayer”需要本地文件。在播放之前从互联网下载并保存到本地。提示:使用“writeToFile” (2认同)