我正在使用AVPlayer进行音频流传输,效果不错。但现在我需要制作一个滑块来向前或向后移动音频,就像典型的音乐播放器一样。我使用了
seekToTime
函数,可以在本地音频文件上很好的工作。但是当我从Web URL流式播放歌曲时,如果我将滑块向前移动大范围,则该函数会停止音频。
我的猜测是歌曲正在下载,如果我用大范围向前移动滑块,那么系统可能还没有为那个时间段下载歌曲数据包,因此它会停止播放器。
比如说我只是按下一个按钮来流式播放歌曲,但现在我立即将滑块移动到0秒至100秒。在这种情况下,系统无法工作,会停止播放器,因为缺少那个时间段的数据包。
有人知道如何解决这个问题吗?还是有其他方法?我正在使用SWIFT进行开发。如果需要,我也可以使用任何库,只要它能在SWIFT中运行。这是我的函数:func forward () {
timeGap = slider.value
let preferredTimeScale : Int32 = 1
let targetTime : CMTime = CMTimeMake(timeGap, preferredTimeScale)
player.seekToTime(targetTime, toleranceBefore: kCMTimeZero, toleranceAfter: kCMTimeZero)
}
提前致谢。
playbackBufferEmpty == true
),并且playbackBufferEmpty
标志永远不会改变其状态为 false。是否有一种使用 AVFoundation 手动启动缓冲的方法? - schmittsfn