1

AVAudioPlayer の currentTime メソッドが負の値を返すのはいつですか? オーディオ ファイルは再生中ですが (currentTime を取得する前にチェックを入れています)、currentTime を呼び出すと負の値が返されます。

何か案は?ありがとう

if(thePlayer != nil && [thePlayer isPlaying]){
    double playerTime = [thePlayer currentTime];
    NSLog(@"Player Time: %f", playerTime);
}

出力

Player Time: -0.019683
4

3 に答える 3

1

これをシミュレーターでテストしていますか?シミュレーターの AVAudioPlayer にはいくつかのバグがあります。1 つは、currentTime が非常に大きな正数または負数になる可能性があることです。currentTime を特定の数値に設定したとしても、多くの場合、異なるものが表示されます。私の知る限り、これはシミュレーターでのみ発生する問題であり、デバイスで実行している場合ではありません。

AVAudioPlayer インスタンスの currentTime プロパティを設定するために使用するコードは次のとおりです。

- (void)safeSetCurentTime:(NSTimeInterval)newTime {
self._player.currentTime = newTime;
if (self._player.currentTime != newTime)
{
    // code falls through to here all the time
            // the second attempt _usually_ works.
    [self prepareAudioForPlayback];
    self._player.currentTime = newTime;
    //NSLog(@"Set time failed");
}

}

于 2010-03-30T22:47:52.830 に答える
0

この問題は iOS4 beta 2 SDK リリースで修正されていると思いますので、iPhone では表示されません。ここを参照してください。ただし、iOS4 が iPad で利用可能になるまで、iPad の問題は解決しないと思います。

回避策を知っている人はいますか?修正係数を適用できるように、現在の時刻が誤って報告される方法を予測する方法はありますか? 私が見ているのは、現在の時間が実際の再生時間より数秒遅れていると報告されていることです (オーディオの開始に近い場合、これは負の可能性があります)、正しい位置に沿って追跡されます。では、アプリが以前の iOS バージョンで使用されるたびに適用できるオフセットがあるのではないでしょうか?

于 2010-07-29T13:15:23.463 に答える
0

iPad で問題を解決する回避策を見つけました。これは、iPad 用の iOS4 がリリースされ、問題が修正されるまで有効です。

オーディオ バッファを保持し、一時停止/停止後に再生を再開しようとしている場合は、オーディオ バッファを AVAudioPlayer インスタンスにリロードし、currentTime を再生を再開する場所に設定してから、再生を再開します。

私にとっては完璧に機能し、オーディオバッファのリロードは非常に高速に思えます。

于 2010-08-11T12:02:05.010 に答える