Me gustaría reproducir un sonido con Swift.
Mi código funcionó en Swift 1.0 pero ahora ya no funciona en Swift 2 o posterior.
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
fuente
fuente
Respuestas:
Lo más preferible es que desee utilizar AVFoundation . Proporciona todos los elementos esenciales para trabajar con medios audiovisuales.
Swift 2.3
Swift 3
Swift 4 (compatible con iOS 13)
Para archivos de sonido cortos, es posible que desee optar por formatos de audio no comprimidos,
.wav
ya que tienen la mejor calidad y un bajo impacto en la CPU. El mayor consumo de espacio en disco no debería ser un gran problema para los archivos de sonido cortos. Cuanto más largos sean los archivos, es posible que desee utilizar un formato comprimido, como.mp3
etc. pp. Compruebe los formatos de audio compatibles deCoreAudio
.Dato curioso: hay pequeñas bibliotecas ordenadas que hacen que la reproducción de sonidos sea aún más fácil. :)
Por ejemplo: SwiftySound
fuente
bgMusic = AVAudioPlayer(contentsOfURL: bgMusicURL, fileTypeHint: nil)
condo { 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 parece un trabajo extra, ¿por qué no sololet player = try AVAudioPlayer(contentsOf: url)
?Para Swift 3 :
La mejor práctica para los activos locales es ponerlo dentro
assets.xcassets
y cargar el archivo de esta manera:fuente
do
aunque tengo problemas para entender lo que sucede en el bloque. Obviamenteplayer!.play()
se explica por sí mismo. Pero ¿cuál es el propósito de lasetCategory
ysetActive
métodos?AVAudioSessionCategoryPlayback
asetCategory
, se asegurará de que el audio se reproduce siempre a pesar de que el teléfono está en la pantalla de bloqueo o en modo silencioso.setActive
es como decirle al sistema que su aplicación está lista para reproducir audioiOS 12 - Xcode 10 beta 6 - Swift 4.2
Use solo 1 IBAction y apunte todos los botones a esa 1 acción.
fuente
Si el código no genera ningún error, pero no escucha el sonido, cree el reproductor como una instancia:
Para mí, la primera solución funcionó cuando hice este cambio :)
fuente
player
en el ámbito externo. De lo contrario,player
se deslocaliza y, por lo tanto, no puede reproducir ningún sonido, ya que ya no existe.static
Swift 4, 4.2 y 5
Reproduzca audio desde URL y desde su proyecto (archivo local)
fuente
Swift 3
fuente
Primero importe estas bibliotecas
establecer delegado como este
escribe este bonito código en la acción del botón o algo de acción:
100% trabajando en mi proyecto y probado
fuente
AudioToolbox
en este lugar.Probado con Swift 4 y iOS 12:
fuente
Swift 4 (compatible con iOS 12)
fuente
The operation couldn’t be completed. (OSStatus error 1954115647.)
. He buscado en todas partes y no puedo encontrar una solución. Podría publicar una pregunta al respecto.Estilo de juego:
archivo Sfx.swift
En cualquier lugar del código
fuente
Este es un código básico para buscar y reproducir un archivo de audio en Swift.
Agregue su archivo de audio a su Xcode y agregue el código a continuación.
fuente
fuente
funciona en swift 4 última versión. ButtonTag sería una etiqueta en un botón en su interfaz. Las notas están en una carpeta en una carpeta paralela a Main.storyboard. Cada nota se nombra como nota1, nota2, etc. ButtonTag proporciona el número 1, 2, etc. del botón que se hace clic y se pasa como parámetro
fuente
importar AVFoundation
importar AudioToolbox
Clase final pública MP3Player: NSObject {
}
// Para llamar a esta función
MP3Player.shared.playLocalFile (nombre: "JungleBook")
fuente
fuente