2012-10-02 194 views
3

我想播放音頻文件,但我可以讓它工作。 我導入了AVFoundation框架。如何播放音頻文件ios

下面是代碼:

NSString *fileName = [[NSBundle mainBundle] pathForResource:@"Alarm" ofType:@"caf"]; 
    NSURL *url = [[NSURL alloc] initFileURLWithPath:fileName]; 
    NSLog(@"Test: %@ ", url); 

    AVAudioPlayer *audioFile = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:NULL]; 
    audioFile.delegate = self; 
    audioFile.volume = 1; 

    [audioFile play]; 

我收到一個錯誤nil string parameter

我複製該文件到支持文件夾,以便該文件是存在的。

你們能幫我嗎?

感謝

+0

請確保當您在Xcode中選擇該文件時,其「目標成員資格」部分已設置(屬性窗口中最左邊的選項卡) – borrrden

+0

這樣做後,我沒有收到錯誤,但聲音無法播放。我給出的路徑是'file://localhost/var/mobile/Applications/FAA680BA-162E-4E58-A22B-3E2F139A4368/RemindMe.app/Alarm.caf' – Camus

+1

我敢打賭,它不玩的原因是因爲它會超出範圍並在有機會之前被釋放。讓它成爲一個實例變量,以便它堅持到來。 – borrrden

回答

0

我用這樣的事情時,該文件是在一個特定的文件夾:

// Build URL to the sound file we are going to play 
NSURL *sound_file = [[NSURL alloc] initFileURLWithPath: [[NSBundle mainBundle] pathForResource:sound_file_name ofType:@"mp3" inDirectory:directory]]; 

// Play it 
audio_player = [[AVAudioPlayer alloc] initWithContentsOfURL:sound_file error:nil]; 
audio_player.delegate = self; 
[audio_player play]; 
[sound_file release]; 

sound_file_name是不帶擴展名的文件名名稱:@"success"

directory是一樣的東西: @"media/sound_effects"

0

添加此項並查看程序是否識別文件存在。

NSLog(@"File Exists:%d",[[NSFileManager defaultManager] fileExistsAtPath:fileName]);

如果存在的話它會打印出1。如果不確定你有合適的文件名(大小寫)。

+0

我做了,它說1. – Camus

+1

嘗試'NSError *錯誤; AVAudioPlayer * audioFile = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; NSLog(@「Error%@」,[error description]);' –

2

只要遵循兩個簡單的步驟

第一步:

UIViewController.h

#import <AudioToolbox/AudioToolbox.h> 
#import <AVFoundation/AVFoundation.h> 

@property(nonatomic, retain) AVAudioPlayer *player; 

第2步:

UIViewController.m

NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"sound" 
                 ofType:@"m4a"]; 
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath]; 

_player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:NULL]; 
[_player setVolume:1.0]; 
[_player play]; 

菊st確保AVAudioPlayer屬性必須是非原子的並保留。

0

確保您導入了您的audiotoolbox框架,然後編寫以下內容。這是我用來播放簡單的聲音

#import <AudioToolbox/AudioToolbox.h> 

CFBundleRef mainBundle = CFBundleGetMainBundle(); 
CFURLRef soundFileURLRef; 
soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"Your sound here", CFSTR ("mp3"), NULL); 

UInt32 soundID; 
AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID); 
AudioServicesPlaySystemSound(soundID); 

如果你有任何困惑,讓我知道。