相关疑难解决方法(0)

AVAudioPlayer没有在Swift中播放音频

我在一个非常简单的单视图Swift应用程序中有这个代码ViewController:

var audioPlayer = AVAudioPlayer()

@IBAction func playMyFile(sender: AnyObject) {

    let fileString = NSBundle.mainBundle().pathForResource("audioFile", ofType: "m4a")
    let url = NSURL(fileURLWithPath: fileString)
    var error : NSError?
    audioPlayer = AVAudioPlayer(contentsOfURL: url, error: &error)
    audioPlayer.delegate = self
    audioPlayer.prepareToPlay()
    if (audioPlayer.isEqual(nil)) {
        println("There was an error: (er)")
    } else {
        audioPlayer.play()
        NSLog("working")
    }
Run Code Online (Sandbox Code Playgroud)

我添加了import AVFoundation并且audioPlayer是一个全局变量.当我执行的代码,它打印"工作",所以它使通过没有错误,但没有播放声音.该设备没有沉默.

cocoa-touch avfoundation avaudioplayer ios swift

9
推荐指数
4
解决办法
3万
查看次数

AVPlayer在模拟器上播放,但不在真实设备上播放

我正在实现一个基本的音频播放器,以播放远程音频文件.文件格式为mp3.我写的代码在模拟器上工作正常但不适用于真实设备.然而,我在我的应用程序中使用相同的URL工作正常,如果我通过使用safari(在相同的真实设备上)加载它所以我真的没有得到缺少点.以下是我的代码:

self.musicPlayer = [AVPlayer playerWithURL:[NSURL URLWithString:urlTrack]];
[self.musicPlayer play];
Run Code Online (Sandbox Code Playgroud)

非常容易的事情.音乐播放器属性定义为

@property (nonatomic, retain) AVPlayer *musicPlayer;
Run Code Online (Sandbox Code Playgroud)

我也试过使用AVPlayerItem但结果是一样的.这是我用过的代码

AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:[NSURL URLWithString:urlTrack]];
self.musicPlayer = [AVPlayer playerWithPlayerItem:playerItem];
[self.musicPlayer play];
Run Code Online (Sandbox Code Playgroud)

最后我尝试使用下面的代码

self.musicPlayer = [AVPlayer playerWithURL:[NSURL URLWithString:urlTrack]];
NSLog(@"Player created:%d",self.musicPlayer.status);
[self.musicPlayer addObserver:self forKeyPath:@"status" options:0 context:nil];


- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    NSLog(@"Player created:%d",self.musicPlayer.status);

    if (object == self.musicPlayer && [keyPath isEqualToString:@"status"]) {
        if (self.musicPlayer.status == AVPlayerStatusReadyToPlay) {
            [self.musicPlayer play];
        } else if (self.musicPlayer.status == AVPlayerStatusFailed) {
            // something went wrong
        }
    }
} …
Run Code Online (Sandbox Code Playgroud)

objective-c avplayer

2
推荐指数
1
解决办法
3055
查看次数

远程mp3文件需要大量时间在swift ios中播放

我有麻烦了。我想在我的应用程序中播放远程 mp3 文件。但是 mp3 文件需要很长时间(大约 5-6 分钟)才能播放。为什么 ?

任何人都可以建议我该怎么办?

 import UIKit

 import AVFoundation

 class TestViewController: UIViewController, AVAudioPlayerDelegate {

 var player:AVAudioPlayer = AVAudioPlayer()

 override func viewDidLoad() {
    super.viewDidLoad()
 }

 @IBAction func play(sender: AnyObject) {

    let url = "http://www.example.com/song.mp3"

    let fileURL = NSURL(string: url.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet()))

    let soundData = NSData.dataWithContentsOfURL(fileURL, options: nil, error: nil)

    var error: NSError?
    self.player = AVAudioPlayer(data: soundData, error: &error)
    if player == nil
    {
        if let e = error
        {
            println(e.localizedDescription)
        }
    }

    player.volume   = 1.0
    player.delegate = self
    player.prepareToPlay() …
Run Code Online (Sandbox Code Playgroud)

avfoundation ios swift

2
推荐指数
1
解决办法
4360
查看次数