IOS 8 Swift AVAudioPlayer 播放远程音频(wowza 服务器)
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/25902916/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
IOS 8 Swift AVAudioPlayer play remote audio (wowza server)
提问by David Turton
I am not an IOS programmer but I need a simple app to play an audio stream from a wowza server. Here is my code, I get no errors but also no audio. Any guidances or help?
我不是 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")
}
}
回答by 2075
This worked for me:
这对我有用:
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()
}
回答by Jsonras
In Swift 2.0and iOS 9
在Swift 2.0和iOS 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")
}
回答by Billy Coover
This anwser helped me: AVAudioPlayer with external URL to *.m4p
这个 anwser 帮助了我:AVAudioPlayer with external URL to *.m4p
I had to convert thr URL to NSData:
我必须将 thr URL 转换为 NSData:
let url = "http://megdadhashem.wapego.ru/files/56727/tubidy_mp3_e2afc5.mp3"
let fileURL = NSURL(string:url)
let soundData = NSData.dataWithContentsOfURL(fileURL, options: nil, error: nil)
var error: NSError?
self.player = AVAudioPlayer(data: soundData, error: &error)
if player == nil {
if let e = error {
println(e.localizedDescription)
}
}
player.prepareToPlay()
player.volume = 1.0
player.delegate = self
player.play()
回答by Just van Bloom
Please keep in mind since iOS 9: App Transport Security (ATS) configured?
请记住自 iOS 9: App Transport Security (ATS) 配置?
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>yourserver.com</key>
<dict>
<!--Include to allow subdomains-->
<key>NSIncludesSubdomains</key>
<true/>
<!--Include to allow HTTP requests-->
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<!--Include to specify minimum TLS version-->
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
Swift 2:
斯威夫特 2:
let url = "http://yourserver.com/source.mp3"
let playerItem = AVPlayerItem(URL:NSURL(string:url)!)
audio = AVPlayer(playerItem:playerItem)
audio.rate = 1.0;
audio.play()
回答by Raptor
To check for error in Swift, use:
要检查 Swift 中的错误,请使用:
if let errorDetails = error {
println("Error creating player: \(errorDetails.localizedDescription)")
} else {
if player.prepareToPlay() && player.play(){
println("yes")
} else {
println("no")
}
}
回答by Ramesh
use AVPlayer:
使用 AVPlayer:
var player:AVPlayer!
var steamingURL:NSURL = NSURL(string:playerURL)
player = AVPlayer(URL: steamingURL)
player.play()
回答by khusboo suhasini
//Create AVPlayer Instance in globally
//全局创建AVPlayer实例
var avPlayer:AVPlayer!
override func viewDidLoad() {
super.viewDidLoad()
let urlString = "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3"
let url = NSURL(string: urlString)!
avPlayer = AVPlayer(url: url as URL)
print("About to play...")
avPlayer.play()
print("isplaying")
}