AVAudioPlayer无法播放MP3文件

时间:2015-12-16 04:26:42

标签: ios audio avaudioplayer audiotoolbox

我有两个MP3文件。我可以播放第一个文件,但不能播放iOS上的第二个文件。

我正在使用AVAudioPlayer播放它们。

我能够播放的第一个文件包含以下信息。

0000000 49 44 33 03 00 00 00 00 21 76 54 49 54 32 00 00
0000010 00 11 00 00 00 4e 68 6f 74 65 20 4d 61 20 53 65
0000020 74 20 4e 61 65 4d 43 44 49 00 00 00 aa 00 00 45


played.mp3: Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, 
v1, 128 kbps, 44.1 kHz, JntStereo

无法播放的剪辑有以下信息。

0000000 49 44 33 04 00 00 00 00 00 5b 54 50 45 31 00 00
0000010 00 0a 00 00 03 43 6f 6c 64 70 6c 61 79 00 54 49
0000020 54 32 00 00 00 08 00 00 03 59 65 6c 6c 6f 77 00

yellow.mp3: Audio file with ID3 version 2.4.0, contains: MPEG ADTS, layer III,  
v2.5,  24 kbps, 8 kHz, Monaural

我拉我的头发是因为我可以使用VLC或iTunes在我的Mac上播放它们。但是,我的iOS播放器无法处理第二个剪辑。

第二个错误是什么?

这是我能玩的。 https://www.dropbox.com/s/l93b4f4n63oihf0/cut.mp3?dl=0

这是我不能玩的。 https://www.dropbox.com/s/0xrpyxwzqhb7dzf/yellow.mp3?dl=0

感谢。

1 个答案:

答案 0 :(得分:1)

它对我来说很好。检查以下代码

目标C

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

@interface ViewController ()
{
    AVAudioPlayer *_audioPlayer;
}
@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Construct URL to sound file
    NSString *path = [NSString stringWithFormat:@"%@/yellow.mp3", [[NSBundle mainBundle] resourcePath]];
    NSURL *soundUrl = [NSURL fileURLWithPath:path];

    // Create audio player object and initialize with URL to sound
    _audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:nil];
    [_audioPlayer play];
}


- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
@end

Swift

import UIKit
import AVFoundation

class ViewController: UIViewController {
    var audioPlayer = AVAudioPlayer()

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        let audioPath = NSBundle.mainBundle().pathForResource("yellow", ofType: "mp3")
        do {
            audioPlayer = try AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: audioPath!))
            audioPlayer .play()
        }
        catch {
            print("Something bad happened. Try catching specific errors to narrow things down")
        }

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}