Воспроизведение файлов MP3 с iPhone SDK

Какой самый простой способ воспроизведения музыкального файла, такого как Mp3 с паузой botton? очень простая кнопка воспроизведения, а другая кнопка приостанавливает эту музыку.. вы можете написать этот код!

Ответы

Ответ 1

Это коды для запрошенных действий, appSoundPlayer является свойством AVAudioPlayer, объявленного в h файле. Также этот пример воспроизводит песню в папке ресурса.

#pragma mark -
    #pragma mark *play*
    - (IBAction) playaction {

        NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"songname" ofType:@"mp3"];
        NSURL *newURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
        self.soundFileURL = newURL;
        [newURL release];
        [[AVAudioSession sharedInstance] setDelegate: self];
        [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryAmbient error: nil];

    // Registers the audio route change listener callback function
    AudioSessionAddPropertyListener (
                                     kAudioSessionProperty_AudioRouteChange,
                                     audioRouteChangeListenerCallback,
                                     self
                                     );

    // Activates the audio session.

    NSError *activationError = nil;
    [[AVAudioSession sharedInstance] setActive: YES error: &activationError];

    AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: soundFileURL error: nil];
    self.appSoundPlayer = newPlayer;
    [newPlayer release];
    [appSoundPlayer prepareToPlay];
    [appSoundPlayer setVolume: 1.0];
    [appSoundPlayer setDelegate: self];
    [appSoundPlayer play];


    [stopbutton setEnabled:YES];
    [playbutton setEnabled: NO];
    playbutton.hidden=YES;
    pausebutton.hidden =NO;
}//playbutton touch up inside

#pragma mark -
#pragma mark *pause*
-(IBAction)pauseaction {
    [appSoundPlayer pause];
    pausebutton.hidden = YES;
    resumebutton.hidden = NO;

}//pausebutton touch up inside

#pragma mark -
#pragma mark *resume*
-(IBAction)resumeaction{
    [appSoundPlayer prepareToPlay];
    [appSoundPlayer setVolume:1.0];
    [appSoundPlayer setDelegate: self];
    [appSoundPlayer play];
    playbutton.hidden=YES;
    resumebutton.hidden =YES;
    pausebutton.hidden = NO;

}//resumebutton touch up inside

#pragma mark -
#pragma mark *stop*
-(IBAction)stopaction{

    [appSoundPlayer stop];
    [playbutton setEnabled:YES];
    [stopbutton setEnabled:NO];
    playbutton.hidden=NO;
    resumebutton.hidden =YES;
    pausebutton.hidden = YES;

}//stopbutton touch up inside

Ответ 2

Для коротких звуков или когда MP3 не воспроизводится на предлагаемом коде, вы всегда можете использовать:

SystemSoundID soundID; 
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/sound.mp3", [[NSBundle mainBundle] resourcePath]]];

AudioServicesCreateSystemSoundID((CFURLRef)url, &soundID); 
AudioServicesPlaySystemSound (soundID);

Не забудьте добавить:

#import <AudioToolbox/AudioToolbox.h>

Ответ 3

well здесь является хорошим учебником.

Тема

NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/audiofile.mp3", [[NSBundle mainBundle] resourcePath]]];

    NSError *error;
    AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
    audioPlayer.numberOfLoops = -1;

[audioPlayer play];

и когда вы хотите приостановить,

[audioPlayer pause];

надеюсь, что это поможет.

Ответ 4

Я боюсь, что ответ уже не работает в iOS 7 и выше. Вам нужно будет использовать следующий код:

в файле заголовка (.h)

Чтобы обрабатывать методы делегата, например, когда воспроизведение звука закончилось, звуковой файл PillayerDidFinishPlaying:, наследует от AVAudioPlayerDelegate.

@property (nonatomic, strong) AVAudioPlayer *player;

в файле реализации (.m)

 NSString *soundFilePath = [[NSBundle mainBundle] pathForResource: resourceName
                                                          ofType: @"mp3"];
 NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];

 AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: fileURL
                                                                  error: nil];
_player = newPlayer;
[_player prepareToPlay];
[_player setDelegate: self];
[_player play];

Ответ 5

Мне нравится простой код, и вот мое решение: (Не забудьте добавить кнопку переключателя, чтобы получить музыку. Удачи)

#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface ViewController ()
{
    NSURL*                  bgURL;
    AVAudioPlayer*          bgPlayer;
}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    bgURL = [[NSURL alloc] initFileURLWithPath: [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"mp3"]];
    bgPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:bgURL error:nil];
}

#pragma mark AVAudioPlayer
- (IBAction)toggleMusic:(UISwitch*)sender {
    NSLog(@"togging music %s", sender.on ? "on" : "off");

    if (bgPlayer) {

        if (sender.on) {
            [bgPlayer play];
        }
        else {
            [bgPlayer stop];
        }
    }   
}

Ответ 7

oalTouch пример кода на веб-сайте разработчика Apple iOS делает то, что вы хотите, и готов к запуску.

Он также показывает, как тестировать, если другое приложение (например, ipod) уже играет в файл, что удобно, если вы хотите, чтобы ваши пользователи могли слушать свою собственную музыку, а не вашу.

Ответ 8

DIRAC API является бесплатным и довольно простым в использовании. Мы использовали его в своем приложении для говорящего робота http://itunes.apple.com/us/app/daidai/id484833168, и мне было удивительно, как ему удается изменять скорость и шаг голоса

http://www.dspdimension.com/download/