سؤال

وأنا على استخدام خدمات الصوت قائمة انتظار لتسجيل الصوت على اي فون. أواجه مشكلة الكمون على الرغم من عند بدء التسجيل. هنا هو رمز (تقريبا):

OSStatus status = AudioQueueNewInput(
     &recordState.dataFormat, // 1
     AudioInputCallback, // 2
     &recordState,  // 3
     CFRunLoopGetCurrent(),  // 4
     kCFRunLoopCommonModes, // 5
     0,  // 6
     &recordState.queue);  // 7

// create buffers
for(int i = 0; i < NUM_BUFFERS; i++)
{
    if (status == 0)
        status = AudioQueueAllocateBuffer(recordState.queue, BUFFER_SIZE, &recordState.buffers[i]);
}

DebugLog(@"Starting recording\n");
OSStatus status = 0;
for(int i = 0; i < NUM_BUFFERS; i++)
{
    if (status == 0)
        status = AudioQueueEnqueueBuffer(recordState.queue, recordState.buffers[i], 0, NULL);
}
DebugLog(@"Queued buffers\n");
if (status == 0)
{
    // start audio queue
    status = AudioQueueStart(recordState.queue, NULL);
}
DebugLog(@"Started recording, status = %d\n", status);

وإخراج سجل يبدو مثل هذا:

2009-06-30 19:18:59.631 app[24887:20b] Starting recording
2009-06-30 19:18:59.828 app[24887:20b] Queued buffers
2009-06-30 19:19:00.849 app[24887:20b] Started recording, status = 0

ملاحظة التأخير 1 ثانية بين رسالة "قائمة الانتظار المخازن" و2ND "بدء تسجيل" الرسالة. أي أفكار كيف يمكنني التخلص منه، بصرف النظر عن بدء التسجيل في أقرب وقت كما كنت بدء التطبيق الخاص بي؟

وراجع للشغل، والثانية 1-يتسق جدا في محاكاة والأجهزة، ولا يبدو أن تتأثر عدد أو حجم المخازن المؤقتة. عن طريق حسن البالغ من العمر أحادية PCM 16 بت.

هل كانت مفيدة؟

المحلول

هذا في بلوق .

ولكن، إذا كنت تبحث لبدء بسرعة تسجيل كنت ستفعل الأفضل استخدام وحدة الصوت عن بعد، أو AVAudioEngine.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top