AudioPlayer (Swift) - воспроизводить звук дважды - с зазором - PullRequest
0 голосов
/ 21 января 2019

Я использую следующий код для воспроизведения звукового файла дважды. Второй звук воспроизводится сразу после первого

Можно ли оставить промежуток времени (1 секунда) между ними? Я пытался найти решение, читая Apple Docs

var letterSound: AVAudioPlayer!

...


     @IBAction func speakLetter(sender: AnyObject) {

            let soundFile: String  = "SoundFile" + String(letterNumber)

            let path = Bundle.main.path(forResource: soundFile, ofType:"mp3")!
            let url = URL(fileURLWithPath: path)

            do {
                let sound = try AVAudioPlayer(contentsOf: url)
                letterSound = sound
                letterSound.numberOfLoops = 1
                letterSound.play()

            } catch {
                // couldn't load file :(
            }

        }

1 Ответ

0 голосов
/ 22 января 2019

Один из вариантов - добавить пробел или тишину в конец вашего аудиофайла.

enter image description here

Если вы этого не сделаетеесть аудио редактор, который я бы порекомендовал Audacity , он бесплатный и есть множество уроков по , как добавить тишину.


Если вы хотите большеОпция, основанная на коде, вы можете использовать метод AVAudioPlayerDelegate didFinishPlaying для определения конца первого воспроизведения, а затем использовать play(atTime:) для запуска следующего цикла через 1 секунду.

func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
    player.play(atTime: player.deviceCurrentTime + 1.0)
}

Этот код не проверен, и я думаю, что он может создать бесконечный цикл, поэтому вам может понадобиться дополнительная логика, чтобы убедиться, что он повторяется только один раз

...