Jouer un bruit court dans iOS
Je suppose que je pourrais utiliser AVAudioPlayer
de jouer un son, cependant, ce dont j'ai besoin est juste jouer un bruit court et je n'ai pas besoin de boucles ou d'un contrôle précis sur le volume etc.
Est-il un moyen facile de faire cela?
- Vous pouvez Jouer des sons que cette réponse stackoverflow.com/a/18958454/2459296
- "Je suppose que je pourrais utiliser AVAudioPlayer..." Pourquoi n'avez-vous pas? Pourquoi ne serait-il pas quelqu'un? Il est beaucoup plus facile de jouer un son à l'aide de AVAudioPlayer.
Vous devez vous connecter pour publier un commentaire.
Tous les autres réponses des fuites de mémoire (sauf à l'ARC est activé pour un des réponses)... curieusement, la réponse initialement marqué comme correcte a un appel à
retainCount
pour aucune raison apparente.Si vous
alloc/init
quelque chose, il doit être libéré (sauf si vous utilisez un ARC).Si vous appelez
AudioServicesCreateSystemSoundID()
vous devez disposer du son qui en résulte.Voir le Audio de l'INTERFACE utilisateur Sons exemple.
En gros:
Complet:
ajouter AudioToolbox.cadre
#import <AudioToolbox/AudioToolbox.h>
aif
fichier mais je n'entends aucun son dans le simulateur...caf
fichiers, se pourrait-il que cela ne fonctionne pas dans le Simulateur? Existe t il de meilleurs types de fichier à utiliser?AudioServicesCreateSystemSoundID((__bridge CFURLRef)mySoundNSURL, &_mySound);
[super viewDidLoad]
sur une sous-classe deNSObject
. 😉Pour des courts extraits sonores (moins de 30 secondes), il y a un SystemSounds de la bibliothèque qui est vraiment agréable.
Pour:
Vous n'avez pas besoin de gérer les paramètres de volume séparément. Le son est joué dans un thread séparé et chargement et de la lecture du clip audio est v rapide. En bref, vous le traitez de ce clip comme un autre système de son.
Inconvénients: Vous ne pouvez pas fournir une audio distinct paramètre de contrôle. Il est lié aux paramètres du système de sons. Vous ne pouvez pas jouer plus de 30 secondes. Probablement, vous ne pouvez pas appliquer des filtres de bruit pour améliorer l'effet audio.
Il y a certainement plus d'avantages et d'inconvénients, mais ce sont certains, je pense, du haut de ma tête.
utiliser cette importation:
<AudioToolbox/AudioToolbox.h>
Ajouter le AudioToolbox Cadre
puis d'appeler la méthode ci-dessous comme [auto playSound], partout où vous voulez jouer le clip.
retainCount
(et le commentaire[soundPath release]
) indique un peu d'une idée fausse de la gestion de la mémoire....aif
fichier mais je n'entends aucun son dans le simulateur...Swift
Les autres réponses ici utiliser Objective-C, donc je suis en fournissant une Swift version ici. Swift utilise Automatique de Comptage de Référence (ARC), donc je ne suis pas conscient de tous les problèmes de fuite de mémoire avec cette réponse (comme averti à ce sujet dans l'acceptation de réponse).
À L'Aide De AudioToolbox
Vous pouvez utiliser le
AudioToolbox
cadre pour jouer les sons courts lorsque vous n'avez pas besoin de beaucoup de contrôle sur la façon dont ils sont joués.Ici est de savoir comment vous le configurer:
Notes:
yourAudioFileName.mp3
(ou.wav
, etc) à votre projet.import AudioToolbox
À L'Aide De AVAudioPlayer
Par l'importation de la
AVFoundation
cadre, vous pouvez utiliserAVAudioPlayer
. Il fonctionne aussi bien sur les courts clips audio et de longues chansons. Vous avez également plus de contrôle sur la lecture que vous avez fait avec le AudioToolbox méthode.Ici est de savoir comment vous le configurer:
Notes:
import AVFoundtation
et à ajouteryourAudioFileName.mp3
à votre projet.AudioServicesPlaySystemSound
est que si l'utilisateur a le bouton mute de puis les sons ne seront pas joués. Qui fait sens, à certains égards, mais en fonction de votre application, l'utilisateur peut toujours s'attendre à entendre un son.Récemment, j'ai utilisé ce code pour jouer courte mp3 audio qui a bien fonctionné:-
Déclarer en-dessous de la @mise en œuvre
[player setVolume:1.0];
devrait venir après la création du joueur.stop
ping que joueur...J'ai utilisé ce code pour lire un court-aiff-son sur iOS
Espère que cette aide.
m4a
àaif
à l'aide d'iTunes et maintenant, je n'entends aucun son dans le simulateur, pouvez-vous me dire ce que l'approche que vous avez utilisé pour la conversion?SIMPLE CLEAN SWIFT 3 VERSION
J'aime de plus en plus de contrôle sur mes sons donc je suis en utilisant AVFoundation.
Assurez-vous de son fichier est ajouté à votre projet et que vous importez AVFoundation.
Ma réponse est le projet de Loi de réponse, mais je l'utilise sans init ou dealloc et relâchez le son après il est joué:
Heres un nettoyage rapide de la méthode que vous pouvez copier et utiliser dans votre application:
Puis de l'utiliser juste:
Si tu vas en boucle, alors vous devez prendre votre
AVAudioPlayer *audioPlayer
dans votre classe afin d'être en mesure d'arrêter le son.. Qui vous n'avez pas si vous voulez juste une petite son.L'utilisation de l'ARC... et je n'ai jamais rien faire avec l'NSError, afin de l'utiliser si te plaît...
L'Utilisation De Swift 4
Beaucoup de réponses sont confuses, et certains sont à l'aide de la
AudioToolbox
cadre, différents de laAVAudioFoundation
cadre... voici ce que j'ai fait. Dans le.h
fichier, j'ai mis ce code dans:@property (nonatomic, retain) AVAudioPlayer *player;
Ce code déclare un lecteur audio nommé "joueur". Dans le
.m
fichier, sous votre@implementation
déclaration, ajouter@synthesize player
. Cette synthétise queplayer
propriété.Quelle que soit la fonction que vous voulez, cravate à votre son pour le joueur en ajoutant cette ligne de code, où
yourSound
est le nom du fichier son, etaif
est votre extension de fichier:player = [[AVAudioPlayer alloc] initWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"yourSound" withExtension:@"aif"] error:nil]
Je sais que la Documentation d'Apple dit de déclarer une chaîne de caractères et un NSURL, mais si vous les combiner en une seule ligne, alors vous n'aurez pas à en disposer par la suite. Aussi, puisque c'est une propriété dans votre
ViewController.m
le fichier, puis vous n'aurez pas à garder paramètreplayer
objet de cravate dans avec son.D'autres réponses aussi inclus à l'aide d'un
SystemSoundID
, mais qui impose aussi des restrictions comme "le fichier ne peut pas être plus de 30 secondes", "il doit être dans un format spécifique," et les œuvres. Avec cela, il peut jouer plusieurs sons à la fois (dans le cas où vous êtes l'élaboration d'une table d'harmonie), et il est plus facile de créer les sons.De jouer votre son, insérez cette ligne (et oui, c'est vraiment facile):
[player play]
Si vous utilisez un ARC, vous ne pouvez pas manuellement éliminer le joueur, comme le système le fera pour vous. Si vous êtes nouveau à l'élaboration et que vous utilisez la dernière version de Xcode, puis vous avez à l'ARC est activé. Si, pour une raison étrange, vous n'avez pas, alors le code pour disposer des ressources utilisées par les
player
est:[player release]
De Le son fonctionne uniquement sur l'Appareil, mais pas dans le Simulateur
Nick créé une bibliothèque qui peut être utilisé pour jouer des sons dans iOS et Mac Apps.
Voir nicklockwood/SoundManager
Veuillez vous référer à Simple iOS lecture audio
Découvrez systemsound à jouer court fichier audio
inclure audiotoolbox cadre
et de créer
systemsoundid objet