2

CABasicAnimationsといくつかを同期しようとしていAVAudioPlayerます。私が抱えている問題は、CABasicAnimation使用CACurrentMediaTime()中にアニメーションをスケジュールするときの基準点としてAVAudioPlayer使用することdeviceCurrentTimeです。アニメーションにCFTimeIntervalも が使用されますが、サウンドには が使用されNSTimeIntervalます (他の CF および NS タイプのように「無料でブリッジ」されているかどうかはわかりません)。基準点も違うと思います。

サウンドとアニメーションが同じ基準点を使用するようにする方法はありますか?

4

2 に答える 2

1

現在NDAの下にありますが、公式の回答が変更されたと思います。

「カメラ キャプチャの新機能」、特に CMSync* 機能に関する最後の数枚のスライドを参照してください。 https://developer.apple.com/videos/wwdc/2012/?id=520

于 2012-06-26T01:14:20.963 に答える
1

「公式」の答えはわかりませんが、どちらも倍精度浮動小数点数であり、参照時間からの秒数を測定します。

ドキュメントから、deviceCurrentTime が現在のオーディオ セッションにリンクされているように聞こえます。

オーディオ出力デバイスの時間値 (秒単位)。(読み取り専用)

@property(readonly) NSTimeInterval deviceCurrentTime 説明 このプロパティの値は、オーディオ プレーヤーの再生中または一時停止中に単調に増加します。

複数のオーディオ プレーヤーがオーディオ出力デバイスに接続されている場合、少なくとも 1 つのプレーヤーが再生中または一時停止している限り、デバイス時間は増加し続けます。

再生中または一時停止中のオーディオ プレーヤーがオーディオ出力デバイスに接続されていない場合、デバイス時間は 0 に戻ります。

オーディオ出力セッションを開始し、CACurrentMediaTime() を呼び出してから、オーディオ セッションの deviceCurrentTime を 2 つの連続するステートメントで取得し、オフセット定数を計算してそれらの間で変換できるはずです。そのオフセットは、数ナノ秒以内に正確になります。オフセットは、オーディオ出力セッションがアクティブな間のみ有効です。オーディオ セッションからすべてのオーディオ プレーヤーを削除するたびに、再計算する必要があります。

于 2012-06-26T00:52:08.673 に答える