Я работаю над записью звука телефона Android и его временной метки. Частота дискретизации составляет 11025 Гц и 16 бит.
Я считываю временную метку сразу после audioRecord.read() с помощью SystemClock и AudioTimestamp(). Затем я подсчитал разницу, полученную этими двумя методами, и обнаружил, что время, полученное с помощью AudioTimestamp(), всегда было на 6 мс раньше, чем время, полученное с помощью SystemClock.
Почему audioTimeRec на 6 мс раньше, чем audioTimeSys_after?
Мой код выглядит следующим образом:
audioRecord.read(sData,0,bufferSizeInBytes);
audioTimeSys_after = SystemClock.elapsedRealtimeNanos();
stopTs = new AudioTimestamp();
int status = audioRecord.getTimestamp(stopTs,TIMEBASE_BOOTTIME);
if (status == audioRecord.SUCCESS) {
audioTimeRec = stopTs.nanoTime ;
long time_Diff = audioTimeSys_after-audioTimeRec;
Log.i("TAG","diff: "+ time_Diff);}
else {
Log.e(TAG, "audioRecord.getTimestamp failed with status: " + status);
}
Подробнее здесь: https://stackoverflow.com/questions/783 ... n-the-time