Je voudrais jouer un son avec Swift.
Mon code fonctionnait dans Swift 1.0 mais maintenant il ne fonctionne plus dans Swift 2 ou plus récent.
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
la source
la source
Réponses:
De préférence, vous pouvez utiliser AVFoundation . Il fournit tous les éléments essentiels pour travailler avec les médias audiovisuels.
Swift 2.3
Swift 3
Swift 4 (compatible iOS 13)
Pour les fichiers son courts, vous voudrez peut-être opter pour des formats audio non compressés, par exemple,
.wav
car ils ont la meilleure qualité et un faible impact sur le processeur. La consommation d'espace disque plus élevée ne devrait pas être un problème pour les fichiers son courts. Plus les fichiers sont longs, vous voudrez peut-être opter pour un format compressé tel que.mp3
etc. pp. Vérifiez les formats audio compatibles deCoreAudio
.Fait amusant: il existe de jolies petites bibliothèques qui facilitent encore plus la lecture des sons. :)
Par exemple: SwiftySound
la source
bgMusic = AVAudioPlayer(contentsOfURL: bgMusicURL, fileTypeHint: nil)
pardo { 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 }
me semble être un travail supplémentaire, pourquoi pas simplementlet player = try AVAudioPlayer(contentsOf: url)
?Pour Swift 3 :
La meilleure pratique pour les actifs locaux est de le mettre à l'intérieur
assets.xcassets
et de charger le fichier comme ceci:la source
do
bloc.player!.play()
est évidemment explicite. Mais quel est le but des méthodessetCategory
etsetActive
?AVAudioSessionCategoryPlayback
àsetCategory
, il veillera à ce que l'audio est toujours joué , même si le téléphone est dans l' écran de verrouillage ou en mode silencieux.setActive
c'est comme dire au système que votre application est prête à lire de l'audioiOS 12 - Xcode 10 bêta 6 - Swift 4.2
Utilisez juste 1 IBAction et pointez tous les boutons sur cette 1 action.
la source
Si le code ne génère aucune erreur, mais que vous n'entendez pas de son, créez le lecteur comme une instance:
Pour moi, la première solution a fonctionné lorsque j'ai fait ce changement :)
la source
player
dans la portée extérieure. Sinon, ilplayer
est délocalisé et ne peut donc pas jouer de son car il n'existe plus.static
Swift 4, 4.2 et 5
Lire l'audio depuis l'URL et depuis votre projet (fichier local)
la source
Swift 3
la source
Importez d'abord ces bibliothèques
définir le délégué comme ceci
écrivez ce joli code sur l'action de bouton ou quelque chose d'action:
100% travaillant dans mon projet et testé
la source
AudioToolbox
à cet endroit.Testé avec Swift 4 et iOS 12:
la source
Swift 4 (compatible iOS 12)
la source
The operation couldn’t be completed. (OSStatus error 1954115647.)
. J'ai cherché partout et je ne trouve pas de solution. Pourrait poster une question à ce sujet.Style de jeu:
fichier Sfx.swift
Partout dans le code
la source
Il s'agit d'un code de base pour rechercher et lire un fichier audio dans Swift.
Ajoutez votre fichier audio à votre Xcode et ajoutez le code ci-dessous.
la source
la source
fonctionne dans la dernière version de swift 4. ButtonTag serait une balise sur un bouton de votre interface. Les notes sont dans un dossier dans un dossier parallèle à Main.storyboard. Chaque note est nommée note1, note2, etc. ButtonTag donne le numéro 1, 2, etc. à partir du bouton cliqué qui est passé en paramètre
la source
importer AVFoundation
importer AudioToolbox
public final class MP3Player: NSObject {
}
// Pour appeler cette fonction
MP3Player.shared.playLocalFile (nom: "JungleBook")
la source
la source