オーディオ ユニット (iOS) を使用して、ファイルから音楽を再生しています。再生中の音楽の現在のタイム スタンプを取得するにはどうすればよいですか?
私は、playbackCallback 関数に AudioTimeStamp 型の変数呼び出し "inTimeStamp" があることを発見しました。現在のタイムスタンプを探すのに適切な場所はありますか?
オーディオ ユニット (iOS) を使用して、ファイルから音楽を再生しています。再生中の音楽の現在のタイム スタンプを取得するにはどうすればよいですか?
私は、playbackCallback 関数に AudioTimeStamp 型の変数呼び出し "inTimeStamp" があることを発見しました。現在のタイムスタンプを探すのに適切な場所はありますか?
はい、どうぞ:
AudioTimeStamp ts;
UInt32 size = sizeof(ts);
AudioUnitGetProperty(THIS->audioPlayerUnit,
kAudioUnitProperty_CurrentPlayTime,
kAudioUnitScope_Global,
0, &ts, &size);
NSLog(@"TS%f", ts.mSampleTime);
秒を取得するより良い方法は、追加することです
THIS->currentTime = ts.mSampleTime / THIS.streamFormatDescription.mSampleRate;
loretoparisi の答えは、すべてのシーンに適しているわけではありません。kAudioUnitSubType_AudioFilePlayer を使用している場合は、彼の答えを試してください。ただし、RemoteIO ユニットなどの他のオーディオ ユニット タイプを使用している場合は、オーディオ ユニットがレンダリングしたフレーム カウントを格納するグローバル変数を設定し、レンダリング サイクルごとに値を更新する必要があります。
player.progress += inNumberFrames/player.canonicalFormat.mSampleRate;