Успешно ли удалось сохранить аудиофайл в хранилище firebase, а затем передать тот же файл в IOS?
До сих пор я успешно записывал звук в быстром (.m4a) формате, загрузите файл в хранилище firebase, получил URL-адрес загрузки, который выглядит следующим образом:
https://firebasestorage.googleapis.com/v0/b/ramb-ecce1.appspot.com/o/rambs%2Framb5E735EE0-E089-4B53-9B7D-DB7AD6CBF7DC?alt=media&token=52b02ee7-9f6b-474b-ab3b-92e0ca9182f3
Я сохранил этот звук в своей базе данных firebase и импортировал его в var вызвал "stream" и безуспешно пытался передать его в аудиоплеер ...
Я вижу некоторую информацию о firestore, поддерживающем потоковую передачу для Andriod, но ничего не связанного с IOS.
Кто-нибудь может предложить здесь помощь? Нужно ли мне использовать другую службу для хранения URL-адресов потоковой передачи? Хотелось бы запустить мой MVP только с использованием firebase, если это возможно.
@ObservedObject var audioPlayer = AudioPlayer()
var stream = ""
var body: some View {
VStack(alignment: .leading){
if audioPlayer.isPlaying == false {
Button(action: {
self.audioPlayer.startPlayback(audio: URL(string: self.stream)!)
}) {
Image(systemName: "play.circle")
.resizable()
.frame(width: 50, height: 50)
}
} else {
Button(action: {
self.audioPlayer.stopPlayback()
}) {
Image(systemName: "stop.fill")
.resizable()
.frame(width: 50, height: 50)
}
}
}
}
}
}
}
Полный аудиоплеер для справки!
класс AudioPlayer: NSObject, ObservableObject, AVAudioPlayerDelegate {
let objectWillChange = PassthroughSubject<AudioPlayer, Never>()
var isPlaying = false {
didSet {
objectWillChange.send(self)
}
}
var audioPlayer: AVAudioPlayer!
func startPlayback (audio: URL) {
let playbackSession = AVAudioSession.sharedInstance()
do {
try playbackSession.overrideOutputAudioPort(AVAudioSession.PortOverride.speaker)
} catch {
print("Playing over the device's speakers failed")
}
do {
audioPlayer = try AVAudioPlayer(contentsOf: audio)
audioPlayer.delegate = self
audioPlayer.play()
isPlaying = true
} catch {
print("Playback failed.")
}
}
func stopPlayback() {
audioPlayer.stop()
isPlaying = false
}
func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
if flag {
isPlaying = false
}
}
}