AVPlayer没有完成流跟踪

时间:2013-10-21 03:06:56

标签: iphone objective-c ios7 audio-streaming avplayer

我正在使用AVPlayer播放长音频mp3流音乐(8分钟),短音乐(1到3分钟)播放完美,但是随着这些更大的音乐,音乐开始播放,但播放后的一些随机时间(2和2之间) 3:20)玩家从头开始再次启动赛道。虽然播放器重启音乐,但状态信息(持续时间和当前时间)保持正常计数,无需重启,只需重启音频。有人有想法吗?

我正在播放的文件是:http://storage-new.newjamendo.com/download/track/57864/mp31/

玩家代码:

AVAudioSession *mySession = [AVAudioSession sharedInstance];

// Assign the Playback category to the audio session.
NSError *audioSessionError = nil;
[mySession setCategory: AVAudioSessionCategoryPlayback
                 error: &audioSessionError];

if (audioSessionError != nil) {

    NSLog (@"Error setting audio session category.");
    return;
}

// Activate the audio session
[mySession setActive: YES
               error: &audioSessionError];

if (audioSessionError != nil) {

    NSLog (@"Error activating audio session during initial setup.");
    return;
}

player = [AVPlayer playerWithURL:[NSURL URLWithString:url]];


[player play];

以下是我如何跟踪有关正常计时的当前时间的信息。

AVPlayerItem *item = player.currentItem;

CMTime duration = [item duration];
CMTime currentTime = [item currentTime];

2 个答案:

答案 0 :(得分:1)

似乎问题是我正在播放的mp3文件是mpeg-1而且Apple文档说我必须使用mpeg-2,所以我刚刚更改为正确的版本,并且错误没有发生试。

答案 1 :(得分:0)

我设法解决了这个问题,(对我来说)服务器将文件作为一个块发送。

我不知道输入和输出,但是流现在作为“远程”流提供(它以段告诉我被告知)。这不仅解决了这个问题,而且下面的这些事情开始对我起作用(就像提供NaN一样)。

float duration =  CMTimeGetSeconds(self.avQueuePlayer.currentItem.duration);

我希望这有帮助,我没有被告知服务器上的更改内容。我的URL链接几乎可以用于所有其他设备,但是从我的应用程序和Safari中播放时遇到了这个问题。