私はAVAudioPlayerに取り組んでいますが、混乱しています
currentTime
、deviceCurrentTime
、 と-playAtTime:
誰かサンプルコードで説明できますか?
AVAudioPlayer が初期化されると、「duration」はサウンドまたは音楽ファイルの長さ (秒単位) になります。
「currentTime」は、開始からの秒単位の音楽ファイル内の位置です。音楽の再生中に currentTime を読み取ると、音楽がどれだけ再生されたかがわかります。サウンドの再生中はいつでも currentTime を設定でき、変更された時間からすぐに再生されます。たとえば、10 秒スキップするには、次のように記述します。
myAudioPlayer.currentTime += 10.0;
オーディオ プレーヤーが一時停止中または開始されていないときに currentTime を設定できます。これにより、次の「再生」コマンドが再生される音楽内の位置が変更されます。
「currentDeviceTime」はまったく別のもので、「playAtTime」と一緒に使用して、必要なときに正確に再生を開始したり、2 つのサウンドを同時に開始したりできます。
お使いの携帯電話のスピーカーには時計が内蔵されており、通常の時計とは異なる時間を返す可能性があると想像するのが最善です. 「currentDeviceTime」は、スピーカーの時計に従って現在の時刻を返します。電話すれば
[myAudioPlayer startPlayAt:myAudioPlayer.currentDeviceTime + 10.0];
「再生」コマンドは、今からちょうど 10 秒後に開始されます。currentDeviceTime は音楽ファイルとは関係ありません。単なる時計です。天国は、Apple が、たとえば正常に機能するはずの dispatch_time_t を使用しなかった理由を知っています。
currentTime
プレイヤーの現在時刻を設定するプロパティです。したがって、プレーヤーはその時点からオーディオの再生を開始します。
deviceCurrentTime
プレーヤーが再生中または一時停止中の時間を取得するプロパティです。2 人のプレイヤーがプレイ中または一時停止中 (停止していない) の場合、両方のプレイヤーが停止するまでデバイス時間が増加します。いずれかが再生中または一時停止している場合、デバイスの時間は増加します。
playAtTime
オーディオ出力デバイスのタイムラインの指定されたポイントから開始して、サウンドを非同期的に再生するメソッドです。
これに関する詳細については、AVAudioPlayerの Apple ドキュメントを参照してください。これら 3 つすべてについてよりよく理解できます。