0
audio i/o tutorialに従って、リアルタイムの音声録音アプリケーションを構築しています。しかし、コールバックは非常にまれに呼び出され、サウンド全体を記録します。たとえば、録音を5秒間開始すると、コールバックは実際には5秒ではなく2秒のクリップしか表示しません。ここTizenはリアルタイムで音声を録音することができません
のみ記録されているバイト数ダンプダミーテストコードである:
int _audio_read_total;
static void _audio_io_stream_read_cb(audio_in_h handle, size_t nbytes, void *userdata)
{
const void *buffer = NULL;
if (nbytes > 0) {
int error_code = audio_in_peek(handle, &buffer, &nbytes);
_audio_read_total += nbytes;
dlog_print(DLOG_DEBUG, LOG_TAG, "nbytes = %d,_audio_read_total = %d", nbytes, _audio_read_total);
error_code = audio_in_drop(handle); // remove audio data from internal buffer
}
}
static void start_audio_recording(appdata_s *ad)
{
int error_code = audio_in_create(48000, AUDIO_CHANNEL_MONO, AUDIO_SAMPLE_TYPE_S16_LE, &ad->input);
error_code = audio_in_set_stream_cb(ad->input, _audio_io_stream_read_cb, ad);
error_code = audio_in_prepare(ad->input);
}
添付画像ギャラクシーギアS3でこのコードを実行した結果を含みます。イメージでわかるように、記録コールバックは32.3から37.7(5秒間)の間に呼び出されますが、(37.7-32.3)* 48000 * sizeof(short)= 518400でなければなりません。 。これは、オーディオの40%未満しか記録されないことを意味します。
誰でも私にこの問題を解決するための提案をしてもらえますか?
ゆう志
このリンクの解決策を調べることができます(https://developer.izen.org/forums/native-application-development/recording-audio-io-callback-very-slow-only-pickup-less -45-オーディオ)。 –