gpt4 book ai didi

ios - 计算多个音频文件顺序播放的总时长/Swift 3、4

转载 作者:行者123 更新时间:2023-11-28 14:02:47 25 4
gpt4 key购买 nike

例如,有40个音频文件(A1,A2,...,A40),通过AVAudioPlayer调出不同编号的文件,依次播放。例如,前 5 个(A1、A2、...、A5)。

var speechPlayer = AVAudioPlayer ()
var currentPlayingItems: [String] = []

fileprivate func prepareAudioItemsToPlay () {
var result: [String] = []

if (introSwitch.isOn) {
result.append ( "Intro")
}

result += audioFileNamesForCurrentLessonType

currentPlayingItems = result.flatMap ({Bundle.main.path (forResource: $ 0, ofType: "m4a")})
currentPlayingItemNumber = 0

fileprivate var audioFileNamesForCurrentLessonType: [String] {
guard let type = selectedLessonType else {return []}
switch type {

case .lesson1:
if (statusSelection.selectedSegmentIndex == 0) {
return ["A1", "A2", "A3", "A4", "A5"]
}
else if (statusSelection.selectedSegmentIndex == 1) {
return ["A1", "A6", "A3, "A7", "A8", "A9","A10"]
}
...
}

如何获得在所选类(class)/状态中播放的所有音频文件的总运行时间?例如:Lesson1, first (exercise) Status:
简介,A1、A2、A3、A4、A5(135 秒,下文)

让我们简单地假设音频文件的持续时间(以秒为单位)如下:
A1 = 1, A2 = 2, A3 = 3, ..., A40 = 40, Intro = 120 这些在列表(数组、元组、字典?)中给出。

我需要数组、元组还是字典以及如何从这个列表中获取值(秒)(Array, Tuple,...)对于 Lesson(i)/status(j) 将它们加在一起,计算持续时间并显示出来?

最佳答案

let durations:[String:Int] = ["A1": 1, "A2": 2, "A3": 3, "Intro": 120]
let fileNames:[String] = ["A1", "A3"]
let totalDuration = durations.filter{ fileNames.contains($0.key) }.values.reduce(0, +)

对于非唯一值:

let totalDuration = fileNames.compactMap{ durations[$0] }.reduce(0, +)

使用 AVURLAsset 获取每个音频文件的持续时间。

关于ios - 计算多个音频文件顺序播放的总时长/Swift 3、4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53376185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com