AVAudioPlayer 无法播放 MP3 文件

Posted

技术标签:

【中文标题】AVAudioPlayer 无法播放 MP3 文件【英文标题】:AVAudioPlayer cannot play MP3 file 【发布时间】:2015-12-16 04:26:42 【问题描述】:

我有两个 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

谢谢。

【问题讨论】:

你能在 ios 之外播放那个音频吗?我的意思是在 iTunes 或快速播放器中? @Muhammad 是的。我可以玩它们。 @Muhammad 我添加了链接看看你能不能玩? 是的工作,你还没有发布相关代码。检查下面的答案。音频播放完美。 【参考方案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.
    



【讨论】:

以上是关于AVAudioPlayer 无法播放 MP3 文件的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 AVAudioPlayer 播放存储在文档目录中的本地 mp3 文件

AVAudioPlayer 不播放 mp3?

来自服务器的 MP3 文件在 iOS7 中无法使用 AVAudioPlayer 播放

本地文件使用 AVAudioPlayer 播放,但不使用 AVPlayer?

使用 AVAudioPlayer 在 Swift 中播放远程 mp3 文件

我想用 AVAudioPlayer 在我的服务器上播放 mp3 文件