在 iOS 应用程序中播放 mp3 文件 [重复]

Posted

技术标签:

【中文标题】在 iOS 应用程序中播放 mp3 文件 [重复]【英文标题】:playing a mp3 file in iOS app [duplicate] 【发布时间】:2013-06-02 03:03:13 【问题描述】:

我不知道如何在 iPhone 游戏中播放音乐文件。

我正在创建一个游戏,并试图弄清楚应用程序启动时如何播放音乐。

我试过这个:

- (void)awakeFromNib 

    NSString *path = [[NSBundle mainBundle] pathForResource:@"musicamenu" ofType:@"mp3"];

    AVAudioPlayer *theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];

    [theAudio play];



【问题讨论】:

你可能想看看这个先前的问题。 ***.com/questions/1296786/… 【参考方案1】:

这就是你的做法。在您的 v1AppDelegate.h 文件中添加

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

@interface v1AppDelegate : UIResponder <UIApplicationDelegate>

    AVAudioPlayer *myAudioPlayer;


@property (nonatomic, retain) AVAudioPlayer *myAudioPlayer;

@property (strong, nonatomic) UIWindow *window;

@end

现在在你的 v1AppDelegate.m 文件中添加这个

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

@implementation v1AppDelegate

@synthesize window = _window;

@synthesize myAudioPlayer;


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions


    //start a background sound
    NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"Soothing_Music2_Long" ofType: @"mp3"];
    NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:soundFilePath ];    
    myAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
    myAudioPlayer.numberOfLoops = -1; //infinite loop
    [myAudioPlayer play];


    // Override point for customization after application launch.
    return YES;

如果您希望在代码中的其他任何位置停止或开始播放此音乐,只需添加此

#import "v1AppDelegate.h"    
- (IBAction)stopMusic
    
        v1AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
        [appDelegate.myAudioPlayer stop];
    


    - (IBAction)startMusic
    
        v1AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
        [appDelegate.myAudioPlayer play];
    

【讨论】:

我工作得很好!!谢谢大家!【参考方案2】:

我建议在applicationDidBecomeActive: 方法中添加播放音乐方法。因为您希望每次启动应用程序时都播放音乐。请注意,您应该持有对播放器的引用。否则音乐将不会播放。

- (void)applicationDidBecomeActive:(UIApplication *)application

    // Play music on another queue so that the main queue is not blocked.
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^
        [self playMusic];
    );


- (void)playMusic

    NSString *path = [[NSBundle mainBundle] pathForResource:@"done" ofType:@"mp3"];
    NSError *error = nil;
    NSURL *url = [NSURL fileURLWithPath:path];
    self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
    [self.player play];

【讨论】:

"请注意,您应该持有对播放器的引用。否则音乐将不会播放。"救了我【参考方案3】:

对于 Swift 3.1:

使用这两个导入:

import AVFoundation
import AudioToolbox

为您的 AVAudioPlayer 创建一个参考:

private var mAudioPlayer : AVAudioPlayer?

使用此功能播放您存储在应用中的声音:

func onTapSound()
        let soundFile = Bundle.main.path(forResource: "slap_placeholder.wav", ofType: nil)
        let url = URL(fileURLWithPath: soundFile!)
        self.mAudioPlayer = try! AVAudioPlayer(contentsOf: url as URL)
        self.mAudioPlayer?.play()

【讨论】:

以上是关于在 iOS 应用程序中播放 mp3 文件 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 http 链接在 iOS6 应用程序中播放 mp3 格式的歌曲?

使用 C++ 在 linux 中播放 .mp3 或其他音频文件 [重复]

iOS - 尝试播放 mp3 文件失败

在IOS中通过http播放mp3文件

在 iOS 应用中播放多种声音(mp3、wav 等)

ios - 从远程 URL 加载 MP3 并播放,冻结 UI