Eu gostaria de tocar um som usando o Swift.
Meu código funcionou no Swift 1.0, mas agora não funciona mais no Swift 2 ou mais recente.
override func viewDidLoad() {
super.viewDidLoad()
let url:NSURL = NSBundle.mainBundle().URLForResource("soundName", withExtension: "mp3")!
do {
player = try AVAudioPlayer(contentsOfURL: url, fileTypeHint: nil)
} catch _{
return
}
bgMusic.numberOfLoops = 1
bgMusic.prepareToPlay()
if (Data.backgroundMenuPlayed == 0){
player.play()
Data.backgroundMenuPlayed = 1
}
}
ios
swift
avfoundation
Michel Kansou
fonte
fonte
Respostas:
De preferência, você pode querer usar o AVFoundation . Ele fornece todos os elementos essenciais para trabalhar com mídia audiovisual.
Swift 2.3
Swift 3
Swift 4 (compatível com iOS 13)
Para arquivos de som curtos, você pode optar por formatos de áudio não compactados, como os
.wav
que têm a melhor qualidade e o menor impacto na CPU. O maior consumo de espaço em disco não deve ser um grande problema para arquivos de som curtos. Quanto mais longos os arquivos, você pode optar por um formato compactado, como.mp3
etc. pp. Verifique os formatos de áudio compatíveis deCoreAudio
.Curiosidade: Existem pequenas bibliotecas organizadas que tornam a reprodução de sons ainda mais fácil. :)
Por exemplo: SwiftySound
fonte
bgMusic = AVAudioPlayer(contentsOfURL: bgMusicURL, fileTypeHint: nil)
pordo { bgMusic = try AVAudioPlayer(contentsOfURL: bgMusicURL, fileTypeHint: nil) } catch _ { return \\ if it doesn't exist, don't play it}
player = try AVAudioPlayer(contentsOf: url) guard let player = player else { return }
parece trabalho extra para mim, por que não apenaslet player = try AVAudioPlayer(contentsOf: url)
?Para o Swift 3 :
A melhor prática para recursos locais é colocá-lo dentro
assets.xcassets
e você carrega o arquivo assim:fonte
do
bloco. obviamenteplayer!.play()
é auto-explicativo. Mas qual é o propósito dos métodossetCategory
esetActive
?AVAudioSessionCategoryPlayback
parasetCategory
, ele vai garantir o áudio é sempre desempenhou embora telefone está em tela de bloqueio ou no modo silencioso.setActive
é como dizer ao sistema que seu aplicativo está pronto para áudio jogoiOS 12 - Xcode 10 beta 6 - Swift 4.2
Use apenas 1 IBAction e aponte todos os botões para essa 1 ação.
fonte
Se o código não gerar nenhum erro, mas você não ouvir som - crie o player como uma instância:
Para mim, a primeira solução funcionou quando fiz essa alteração :)
fonte
player
escopo externo. Caso contrário,player
é deslocalizado e, portanto, não pode reproduzir nenhum som, pois ele não existe mais.static
Swift 4, 4.2 e 5
Reproduzir áudio a partir do URL e do seu projeto (arquivo local)
fonte
Swift 3
fonte
Primeiro importe essas bibliotecas
definir delegado como este
escreva este código bonito na ação do botão ou algo:
100% trabalhando no meu projeto e testado
fonte
AudioToolbox
neste local.Testado com Swift 4 e iOS 12:
fonte
Swift 4 (compatível com iOS 12)
fonte
The operation couldn’t be completed. (OSStatus error 1954115647.)
. Procurei em todos os lugares e não consigo encontrar uma solução. Pode postar uma pergunta sobre isso.Estilo de jogo:
arquivo Sfx.swift
Em qualquer lugar no código
fonte
Este é o código básico para encontrar e reproduzir um arquivo de áudio no Swift.
Adicione seu arquivo de áudio ao seu Xcode e adicione o código abaixo.
fonte
fonte
funciona na versão mais recente do swift 4. ButtonTag seria uma tag em um botão na sua interface. As anotações estão em uma pasta paralela ao Main.storyboard. Cada nota é nomeada como nota1, nota2, etc. ButtonTag está fornecendo o número 1, 2, etc. a partir do botão clicado que é passado como param
fonte
importar AVFoundation
importar AudioToolbox
classe final pública MP3Player: NSObject {
}
// Para chamar esta função
MP3Player.shared.playLocalFile (nome: "JungleBook")
fonte
fonte