Je suis le audio i/o tutorial pour créer une application d'enregistrement audio en temps réel. Cependant, le rappel est appelé très rarement pour enregistrer le son entier. Par exemple, lorsque je démarre l'enregistrement pendant 5 secondes, le rappel ne donne en réalité qu'un clip de 2 secondes (au lieu de 5).Tizen est incapable d'enregistrer l'audio en temps réel
Voici un code de test fictif qui ne dépotoirs combien d'octets ont été enregistrés:
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);
}
Les images attachées comprennent le résultat de l'exécution de ce code sur Galaxy vitesse S3. Comme vous pouvez le voir sur l'image, le rappel d'enregistrement est appelé de l'heure 32.3 à l'heure 37.7 (sur 5 secondes), mais seulement 224250 octets sont reçus (il devrait être (37.7-32.3) * 48000 * sizeof (court) = 518400) . Cela signifie que seulement moins de 40% de l'audio est enregistré.
Quelqu'un pourrait-il me donner quelques suggestions pour résoudre ce problème?
Yu-Chih
Vous pouvez parcourir la solution dans ce lien (https://developer.tizen.org/forums/native-application-development/recording-audio-io-callback-very-slow-only-pick-up-less -45-audio). –