我正在写一个简单的音乐播放器,可以改变歌曲的速度。作为一个时移图书馆我使用dirac3-le。由于某种原因,currentTime()仅返回0.所以我将函数bach反转为版本1.0。 (似乎mFramePositionInInputFile为0)。
-(NSTimeInterval)currentTime
{
//return (NSTimeInterval)mFramePositionInInputFile / mSampleRate;
// this was the code used in version 1.0:
return (NSTimeInterval)mTotalFramesPlayed / mSampleRate;
}
完成此操作后,我可以像这样计算歌曲的总时间和当前时间(以分钟为单位):
int totalMinutes = (int)self.player.fileDuration/60;
int totalSeconds =(int)self.player.fileDuration % 60;
self.songTotalTime.text = [NSString stringWithFormat:@"%i:%02i", totalMinutes, totalSeconds];
int currentMinutes = (int)self.player.currentTime/60;
int currentSeconds = (int)self.player.currentTime % 60;
self.songCurrentTime.text = [NSString stringWithFormat:@"%i:%02i", currentMinutes, currentSeconds];
但是当我改变歌曲的速度时,时间以旧的速度返回。因此,速度提高两倍,时间仅为50%。与进度视图相同。
由于
答案 0 :(得分:0)
" -currentTime使用ProcessingBeganCallback(),只在商业版的Dirac中支持。"
所以基本上我必须运行自己的实现。