我现在开发RadioStream应用程序。我使用SwiftAudioPLayer框架,但几秒钟后播放器停止了。因此,在swiftUI中播放HTTP流中的音频可能是另一种方式。还是我需要将代码从Uikit迁移到swiftUI?
我是swiftUI和iOS开发的新手,非常感谢您的提前回复。谢谢!
SwiftAudioPlayer框架代码,代码来源:https://github.com/tanhakabir/SwiftAudioPlayer#realtime-音频操作***
如何在swiftUI中播放广播流URL文件?
import SwiftUI
import SwiftAudioPlayer
func playMusic() {
let url = URL(string:"http://online.radiorecord.ru:8102/rus_128")!
SAPlayer.shared.startRemoteAudio(withRemoteUrl: url)
SAPlayer.shared.play()
}
}
使用https而不是您正在使用的http,因为:
"iOS 9.0和macOS 10.11及更高版本使用应用程序传输安全(ATS(用于使用URLSession建立的所有HTTP连接。ATS要求HTTP连接使用HTTPS(RFC 2818(">
然而;
"您可以通过添加应用程序信息属性列表的NSAppTransportSecurity密钥文件,并提供ATS配置字典作为值">
这就是在Info.plist文件中添加异常。
参见";https://developer.apple.com/documentation/bundleresources/information_property_list/nsapptransportsecurity">
对于从URL播放音频,我找到了这个答案。希望会帮助别人。
import AVFoundation
...
var player = AVPlayer()
var playerItem: AVPlayerItem!
func initPlayer(url: String) {
guard let url = URL.init(string: url) else { return }
let playerItem = AVPlayerItem(url: url)
player = AVPlayer.init(playerItem: playerItem)
player.play()
}
func play() {
isPlaying.toggle()
player.play()
}
并使用您的URL初始化播放器,祝您好运。