首页 文章

AVPlayer没有完成流跟踪

提问于
浏览
6

我正在使用AVPlayer播放长音频mp3流音乐(8分钟),短音乐(1到3分钟)播放完美,但随着这些更大的音乐,音乐开始播放,但播放后一些随机的分钟(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

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

  • 1

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

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

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

    我希望这有帮助,我没有被告知服务器上的更改 . 扼杀我的URL链接几乎所有其他设备,但我从我的应用程序和Safari播放时遇到此问题 .

相关问题