2015-12-16 152 views
-1

我有两个MP3文件。我能够播放第一个文件,但不能在iOS上播放第二个文件。AVAudioPlayer无法播放MP3文件

我正在使用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 

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

第二个有什么问题?

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

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

谢谢。

+0

你能够播放音频的IOS之外。我的意思是在iTunes或快速播放器? –

+0

@Muhammad yup。我能够玩他们。 – moeseth

+0

@穆罕默德我已经添加了链接,看看你是否可以玩他们? – moeseth

回答

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 

斯威夫特

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. 
    } 


}