0

オーディオ ユニット (iOS) を使用して、ファイルから音楽を再生しています。再生中の音楽の現在のタイム スタンプを取得するにはどうすればよいですか?

私は、playbackCallback 関数に AudioTimeStamp 型の変数呼び出し "inTimeStamp" があることを発見しました。現在のタイムスタンプを探すのに適切な場所はありますか?

4

2 に答える 2

4

はい、どうぞ:

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;
于 2013-09-10T13:40:03.937 に答える
0

loretoparisi の答えは、すべてのシーンに適しているわけではありません。kAudioUnitSubType_AudioFilePlayer を使用している場合は、彼の答えを試してください。ただし、RemoteIO ユニットなどの他のオーディオ ユニット タイプを使用している場合は、オーディオ ユニットがレンダリングしたフレーム カウントを格納するグローバル変数を設定し、レンダリング サイクルごとに値を更新する必要があります。

player.progress += inNumberFrames/player.canonicalFormat.mSampleRate;
于 2016-02-02T02:55:52.603 に答える