ChunkedAudioPlayer

用于同步/异步分块音频流的简单音频播放器。

CI

安装

您可以通过将 swift-chunked-audio-player 添加为软件包到您的 Xcode 项目中。

https://github.com/mihai8804858/swift-chunked-audio-player

如果您想在 SwiftPM 项目中使用 swift-chunked-audio-player,只需将其添加到您的 Package.swift 中即可

dependencies: [
  .package(url: "https://github.com/mihai8804858/swift-chunked-audio-player", from: "1.0.0")
]

然后将该产品添加到任何需要访问该库的目标中

.product(name: "ChunkedAudioPlayer", package: "swift-chunked-audio-player"),

概述

ChunkedAudioPlayer 使用以下方法来流式传输实时音频

快速入门

private let player = AudioPlayer()
let stream = AsyncThrowableStream<Data, Error> = ...
// type parameter is optional, but recommended (if the stream type is known)
player.start(stream, type: kAudioFileMP3Type)
player.$currentState.sink { state in
  // handle player state
}.store(in: &bag)

player.$currentRate.sink { rate in
  // handle player rate
}.store(in: &bag)

player.$currentDuration.sink { duration in
  // handle player duration
}.store(in: &bag)

player.$currentTime.sink { time in
  // handle player time
}.store(in: &bag)

player.$currentError.sink { error in
  if let error {
    // handle player error
  }
}.store(in: &bag)
// Set stream volume
player.volume = 0.5

// Set muted
player.isMuted = true

// Set stream rate
player.rate = 0.5

// Pause current stream
player.pause()

// Resume current stream
player.resume()

// Stop current stream
player.stop()

// Rewind 5 seconds
player.rewind(CMTime(seconds: 5.0, preferredTimescale: 1000))

// Forward 5 seconds
player.forward(CMTime(seconds: 5.0, preferredTimescale: 1000))

// Seek to specific time
player.seek(to: CMTime(seconds: 60, preferredTimescale: 1000))

AudioPlayer 遵循 ObservableObject 协议,因此可以轻松集成到 SwiftUI View 中,并在属性更改时自动更新 UI

struct ContentView: View {
  @ObservedObject private var player = AudioPlayer()

  var body: some View {
    Text("State \(player.currentState)")
    Text("Rate \(player.currentRate)")
    Text("Time \(player.currentTime)")
    Text("Duration \(player.currentDuration)")
    if let error = player.currentError {
        Text("Error \(error)")
    }
  }
}

许可证

此库在 MIT 许可证下发布。有关详细信息,请参阅 LICENSE