7

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

我正在播放的文件是这样的:http ://storage-new.newjamendo.com/download/track/57864/mp​​31/

播放器代码:

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];
4

2 回答 2

1

似乎问题在于我正在流式传输的 mp3 文件是 mpeg-1,Apple 文档说我必须使用 mpeg-2,所以我刚刚更改为正确的版本,并且错误不再发生。

于 2013-10-27T17:47:13.090 回答
0

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

我不知道来龙去脉,但流现在以“范围”流的形式提供(我被告知它是在片段中提供的)。这不仅解决了问题,而且下面的这些事情开始对我有用(与提供 NaN 不同)。

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

我希望这会有所帮助,我并没有被告知服务器上发生了什么变化。奇怪的是,我的 URL 链接几乎可以在所有其他设备上使用,但是在我的应用程序和 Safari 中播放时遇到了这个问题。

于 2013-11-21T12:53:44.550 回答