如何在 iOS 13 中传输远程音频? (斯威夫特用户界面)
How to stream remote audio in iOS 13? (SwiftUI)
此代码使用 AVPlayer
仅适用于 Playground
import AVFoundation
var player = AVPlayer()
let playerItem = AVPlayerItem(url: URL(string: "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3")!)
player = AVPlayer(playerItem: playerItem)
player.play()
当我尝试在我的物理设备上的 SwiftUI 应用程序上 运行 它时,使用此代码:
Button(action:{
var player = AVPlayer()
let playerItem = AVPlayerItem(url: URL(string: "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3")!)
player = AVPlayer(playerItem: playerItem)
player.play()
print("Works")
},label:{
Image("play")
})
它将 Works 打印到控制台。但是,它不会在设备上播放任何声音。
非常感谢任何帮助,在这里找不到任何东西。
非常感谢!
在 SwiftUI 中,视图是值类型。它们只是描述屏幕上事物的数据。它们可以随时创建、销毁或复制。 AVPlayer 是对特定播放器对象的引用。您在这里假设它将继续存在,并且只会有一个。这不是 SwiftUI View 提供的东西。
您需要将您的 AVPlayer 移到视图之外(进入模型对象),然后将 UI 操作绑定到它。
此代码使用 AVPlayer
仅适用于 Playground
import AVFoundation
var player = AVPlayer()
let playerItem = AVPlayerItem(url: URL(string: "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3")!)
player = AVPlayer(playerItem: playerItem)
player.play()
当我尝试在我的物理设备上的 SwiftUI 应用程序上 运行 它时,使用此代码:
Button(action:{
var player = AVPlayer()
let playerItem = AVPlayerItem(url: URL(string: "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3")!)
player = AVPlayer(playerItem: playerItem)
player.play()
print("Works")
},label:{
Image("play")
})
它将 Works 打印到控制台。但是,它不会在设备上播放任何声音。
非常感谢任何帮助,在这里找不到任何东西。
非常感谢!
在 SwiftUI 中,视图是值类型。它们只是描述屏幕上事物的数据。它们可以随时创建、销毁或复制。 AVPlayer 是对特定播放器对象的引用。您在这里假设它将继续存在,并且只会有一个。这不是 SwiftUI View 提供的东西。
您需要将您的 AVPlayer 移到视图之外(进入模型对象),然后将 UI 操作绑定到它。