لماذا لا يلعب Portaudio بشكل جيد مع برامج صوتية أخرى أو كيف يمكنني الحصول عليها؟

StackOverflow https://stackoverflow.com/questions/2351884

  •  23-09-2019
  •  | 
  •  

سؤال

أحاول كتابة تطبيق صوتي باستخدام Portaudio ، ولكن إذا كانت أي برامج صوتية أخرى (عادةً Firefox) تعمل في الوقت الذي أحاول تشغيله ، أحصل على الخطأ التالي:

PaHost_OpenStream: could not open /dev/dsp for O_WRONLY
PaHost_OpenStream: ERROR - result = -10000
An error occured while using the portaudio stream
Error number: -10000
Error message: Host error.

من الواضح أن هذا يجعل برنامجي عديم الفائدة لأنه لن يعمل إذا كان برنامج آخر يستخدم الصوت. هل هناك طريقة للتغلب على هذا أم لا ينبغي أن أستخدم Portaudio؟

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

المحلول

تحتاج إلى اختيار جهاز يسمى "Pulse" لـ Portaudio للعمل مع Pulseaudio ، وهو خادم الصوت المستخدم لمشاركة بطاقة الصوت على أكبر توزيعات Linux في الوقت الحاضر. تشير رسالة الخطأ إلى أنها تحاول استخدام واجهة OSS /DEV /DSP ، والتي لا تدعم مشاركة البطاقات على الإطلاق.

يمكنك استخدام رمز مثل هذا لإدراج الأجهزة:

for (int i = 0, end = Pa_GetDeviceCount(); i != end; ++i) {
    PaDeviceInfo const* info = Pa_GetDeviceInfo(i);
    if (!info) continue;
    printf("%d: %s\n", i, info->name);
}

ثم قم بتزويد الرقم المناسب بـ OpenStream داخل معلمة الدفق.

لاحظ أنك تحتاج إلى Portaudio V19. دعم V18 الأقدم فقط OSS.

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