¿Hay alguna manera fácil de cargar, reproducir y controlar un archivo mp3 de cocoa? Intenté buscar en Google, pero, como todo lo demás, obtengo resultados desordenados y no tengo idea de dónde empezar. Según tengo entendido, hay y NSSound, pero tiene muchas limitaciones y luego está CoreAudio, pero es muy difícil. Entonces, ¿alguien puede señalarme en la dirección correcta con esto? Gracias.cacao jugando un mp3
Respuesta
RESURRECCIÓN EN CURSO:
Por qué resucitar a esta pregunta? porque googlear "cocoa play mp3" me lleva aquí, y no hay una respuesta impresionante de 2012. Entonces, aquí está la impresionante respuesta de 2012;)
¡Use AVFoundation! Según Apple, se ha integrado con Mac OS X Lion (creo), así que ... Aquí está cómo reproducir mp3 sin problemas:
1- enlace AVFoundation Framework.
2- importación siempre que lo desee para reproducir su impresionante mp3
#import <AVFoundation/AVFoundation.h>
3- Agregar una variable de instancia audioplayer para reproducir el sonido (Así es como me gusta hacerlo, por lo menos)
@interface WCMainWindow : ... {
...
AVAudioPlayer* audioPlayer;
}
4- En que init, asegúrese de que usted hace funcionar su audioplayer:
NSString* path = [[NSBundle mainBundle] pathForResource:@"myFile" ofType:@"mp3"];
NSURL* file = [NSURL fileURLWithPath:path];
// thanks @gebirgsbaerbel
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:file error:nil];
[audioPlayer prepareToPlay];
5- reproducir archivos en MP3 increíble !!
if ([audioPlayer isPlaying]) {
[audioPlayer pause];
} else {
[audioPlayer play];
}
Finalmente, el crédito va al this guy.
¿Cómo se prueba para saber si puede usar esto? – Mark
¿Qué quieres decir? Siga los pasos explicados y asegúrese de agregar un archivo MP3 a sus recursos. Luego, agregue un botón (acción) que llame a '[audioPlayer play]' – Mazyod
El método URLWithString siempre devuelve nil para mí. Usando '[NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource: @" myFile "ofType: @" mp3 "]];' en su lugar solucionó el problema. –
He escrito un marco en C++ que podría ayudar: http://github.com/sbooth/SFBAudioEngine
Es compatible con múltiples formatos de audio y tiene una API bastante benigno y viene con una muestra de cacao.
Si no está interesado en frameworks de terceros, su apuesta probablemente sea utilizar AudioQueue para encargarse de la reproducción. Para hacer esto, probablemente use AudioFile para decodificar el MP3 y AudioQueue para la reproducción. Apple tiene un ejemplo en http://developer.apple.com/mac/library/samplecode/AudioQueueTools/Introduction/Intro.html
Además de NSSound
, puede considerar QTMovieView
. Suena extraño, pero puede tener un QTMovieView
oculto en su ventana y usarlo para reproducir un MP3.
Agregado: QTMovieView
está en desuso a partir de OS 10.9. Entonces, a menos que necesites soportar versiones de sistema operativo antes de 10.7 (cuando AVFoundation llegó a la Mac), probablemente no deberías usar esto.
También he visto ejemplos con QTKit sin ningún punto de vista, pero no estoy seguro de si esta es una buena manera de hacerlo, ya que no he encontrado cómo buscar un archivo o tal vez incluso agregar algunos efectos más tarde. – Marius
No estoy seguro de lo que quiere decir con "buscar un archivo". – JWWalker
Bueno, en términos más simples, vaya a una posición específica y continúe jugando desde allí. – Marius
Use NSSound.
No especificó a qué se refiere con "muchas limitaciones", por lo que no sé por qué esto no funcionará para usted. Tenga en cuenta que tiene muchas menos limitaciones desde Leopard; ahora puede jugar en cualquier dispositivo, por ejemplo.
#import <Cocoa/Cocoa.h>
#import <QTKit/QTKit.h>
@interface SoundPlayer : NSObject {
NSSound *sound;
IBOutlet NSWindow *window;
IBOutlet NSSlider *progress;
BOOL loop;
}
- (IBAction)open: (id)sender;
- (IBAction)setLoop: (id)sender;
- (IBAction)play: (id)sender;
- (IBAction)stop: (id)sender;
- (IBAction)takeCurrentTimeFrom: (id)sender;
@end
#import "SoundPlayer.h"
@implementation SoundPlayer
- (IBAction)open: (id)sender
{
NSOpenPanel *openPanel = [NSOpenPanel openPanel];
[openPanel runModalForTypes: [NSArray arrayWithObjects: @"aiff", @"mp3", @"m4a", nil]];
[sound release];
sound = [[QTMovie movieWithFile: [openPanel filename]
error: NULL] retain];
[sound setAttribute: [NSNumber numberWithBool: loop]
forKey: QTMovieLoopsAttribute];
[window setTitle: [[openPanel filename] lastPathComponent]];
}
- (IBAction)setLoop: (id)sender
{
loop = ([sender state] == NSOnState);
[sound setAttribute: [NSNumber numberWithBool: loop]
forKey: QTMovieLoopsAttribute];
}
- (IBAction)play: (id)sender
{
NSTimeInterval duration;
QTGetTimeInterval([sound duration], &duration);
[progress setMaxValue: duration];
[NSTimer scheduledTimerWithTimeInterval: 0.1
target: self
selector: @selector(updateIndicator:)
userInfo: sound
repeats: YES];
[sound play];
}
- (void)updateIndicator: (NSTimer*)aTimer
{
QTMovie *playingSound = [aTimer userInfo];
if (!(sound == playingSound && ([sound rate] != 0)))
{
[aTimer invalidate];
return;
}
NSTimeInterval currentTime;
QTGetTimeInterval([sound currentTime], ¤tTime);
[progress setDoubleValue: currentTime];
}
- (IBAction)stop: (id)sender
{
[sound stop];
}
- (IBAction)takeCurrentTimeFrom: (id)sender
{
[sound setCurrentTime: QTMakeTimeWithTimeInterval([sender doubleValue])];
}
@end
- 1. jugando archivo .mp3 en java con el bloc de notas
- 2. ¿Jugando con código sin puntos?
- 3. cacao setAnimationDidStopSelector
- 4. Construyendo un Texas Hold'em jugando AI ... desde cero
- 5. iPhone: ¿Cómo detectar si iTunes está jugando?
- 6. jQuery + parseInt() no está jugando muy bien
- 7. Conectando y jugando con Cassandra en Java
- 8. jugando con GCC 4.6 en Windows
- 9. Jugando con el formato intermedio de gcc
- 10. Buscar MPMoviePlayerController está jugando O no
- 11. cacao cambiar un foco de mi solicitud
- 12. arrastrando un rectángulo en el cacao
- 13. Cacao - Cómo formatear un archivo XML
- 14. cacao - conversión de un doble a cadena
- 15. cacao: Cómo hacer un fondo transparente webView?
- 16. Controle iTunes desde una aplicación de cacao
- 17. Mejor registrador para cacao
- 18. Cacao: cree gráficos
- 19. cacao Aplicación Bootstrap Preguntas
- 20. cacao página PDF división
- 21. ¿Cacao u objetivo C?
- 22. Guardar archivos en cacao
- 23. Atajos globales de cacao?
- 24. Cacao, Windows e hilos?
- 25. Error de cacao 260
- 26. Cacao sin XCode
- 27. Cargando un archivo AAC/MP3 "manualmente"
- 28. longitud de tiempo de un archivo mp3
- 29. ¿Puede Python abrir un archivo mp3
- 30. Crear un mp3 de muestra con fade
Lo sentimos, ¿está desarrollando para iOS o Mac? – shosti
Sí, lo siento, se olvidó de aclarar: AVAudioPlayer no funcionará: estoy desarrollando para OSX – Marius
A partir de Mac OS X 10.7 Lion (posiblemente incluso 10.6.8) ¡AVFoundation funciona! Por lo tanto, AVAudioPlayer ... Ver la respuesta a continuación .. – Mazyod