을 재생하는 동안은 :오디오 플레이어 지속 시간의 변화 나 오디오 파일의 지속 시간을 때 그것을 재생하기 전에
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
...
[audioPlayer prepareToPlay];
duration = audioPlayer.duration;
나는 예를 들어 16.71s에 대한 지속 시간을 얻을. 그런 다음 연주하는 동안 0.2 초마다 샘플을 가져 가면 재생 시간이 변경됩니다. 16.71 초, 17.02 초, 17.23 초, 17.33 초, 17.38 초, 17.43 초, 17.38 초, 17.29 초, 17.31 초로 1.2에서 1.6 초마다 변경되고 마지막 2.5 초 동안 17.51 초로 유지됩니다. 그래서 그것은 위아래로갑니다.
I 슬라이더 위치를 업데이트하는 방법으로 샘플링하고 경과 시간과 총 지속 시간도 표시합니다. 연주하는 동안 길이가 (int truncated) 16에서 17로 변하는 것을 보는 것은 정말로 이상하게 보입니다. 또한이 모든 표류와 함께 슬라이더 위치가 꺼집니다.
이유가 누구인지 알고 있습니까?
이제 지속 시간에 대해 이야기했습니다. 누군가 audio player.duration
이 [audioPlayer prepareToPlay]
이 생략되었을 때 실제 지속 시간의 약 두 배가되는 값을 반환 할 수있는 이유를 알고 있습니까?
를, 이들은 각 시간을 얻을 같은 숫자? 또는 그들은 변화합니까? – WendiKidd
첫 번째 값은 항상 동일합니다 : 16,71 초. 이후의 값은 새로운 'AVAudioPlayer'로 재생할 때마다 다릅니다. 최종 값도 항상 동일합니다 : 17.51 초. 그러나 동일한 오디오 플레이어로 재생할 때 모든 값은 17.51입니다. –
어떤 유형의 오디오 파일입니까? VBR (가변 비트율)으로 인코딩 된 경우 오디오 플레이어가 파일의 길이를 추정하려고 할 수 있습니다. – batkuip