iOS EZAudio可获取录制时间和文件持续时间

iOS EZAudio可获取录制时间和文件持续时间,ios,core-audio,avaudiorecorder,Ios,Core Audio,Avaudiorecorder,我正在使用您可以找到的EZAudio框架。我很难弄清楚如何获得我的音频文件的录制时间和总时间。当我在录音时,我想要一个标签显示导引头的位置,另一个标签显示录音的总时间。示例:2:23 | 3:32。位置标签将每秒更新一次,并且只有当用户记录的时间超过总时间以使文件更长时,总时间标签才会开始更新 我所尝试的:我是一个完全的noob当谈到核心音频。我正在使用EZAudio库中的OpenGL音频绘图,它会在我录制时更新,所以必须有一种方法来进行一些转换以计算时间 对于我考虑用这个文件准备一个AVAud

我正在使用您可以找到的EZAudio框架。我很难弄清楚如何获得我的音频文件的录制时间和总时间。当我在录音时,我想要一个标签显示导引头的位置,另一个标签显示录音的总时间。示例:2:23 | 3:32。位置标签将每秒更新一次,并且只有当用户记录的时间超过总时间以使文件更长时,总时间标签才会开始更新

我所尝试的:我是一个完全的noob当谈到核心音频。我正在使用EZAudio库中的OpenGL音频绘图,它会在我录制时更新,所以必须有一种方法来进行一些转换以计算时间

对于我考虑用这个文件准备一个AVAudioPlayer的总时间来说,用这种方式获取持续时间,但这只在用户没有录制的情况下有效。如果他们正在录制,那么我需要一种方法来实时更新这两次

在另一个应用程序中,我使用的AVAudioRecorder不适用于我的目的,我可以创建一个NSTimer并让它启动timerUpdate函数:

_timer = [NSTimer scheduledTimerWithTimeInterval:.01f
                                              target:self
                                            selector:@selector(timerUpdate)
                                            userInfo:nil
                                             repeats:YES];

- (void) timerUpdate
{
if (_recording)
{
    int m = _recorder.currentTime / 60;
    int s = ((int) _recorder.currentTime) % 60;   

    _duration.text = [NSString stringWithFormat:@"%.2d:%.2d", m, s];


}
if (_playing)
{
    _progress.progress = _player.currentTime/_player.duration;
}

}

EZRecorder没有currentTime方法,因此无法使用。我不是要你为我写代码,只是给我指出正确的方向。

我在试图理解你的用例。用户是否过度渲染曲目?因此,在您的示例中,3:32是原始文件的长度,2:23是当前录制/过度渲染文件中的位置/当前时间?不是过度渲染,而是覆盖。他们将导引头滑动到他们想要开始录制的位置,比如说修复错误。然后当他们录制时,从2:23到他们停止的所有内容都被覆盖了,明白了。在回调中,您可以访问帧数inNumberFrames,因此可以使用它来计算当前录制时间AudioUnitRender。然后,做一些算法来计算用户开始在原始文件中录制的偏移量。我想我只是不知道如何从我的视图控制器访问这些数据。我初始化了一个EZMirror,但是没有任何公共方法可以调用以获取inNumberFrames。就像我说的,noob。有一点工作需要做,你需要打开AudioBufferList并保持帧/样本的连续记录。不是很难,但如果你没有很长时间编程,那可能是一个挑战。本质上,您希望创建一个静态变量,在每次调用回调时更新/增加传递的样本数/帧数。您正在使用EZOutput模块吗?它有一个具有inTimeStamp属性的回调,该属性可能包含所需的数据。对不起,我从来没用过EZAudio。尝试寻找EZAudio论坛或将问题发布到GitHub。祝你好运