سؤال

كيف يمكن التقاط الصوت برمجياً؟أقوم بتنفيذ تطبيق يتدفق في الوقت الفعلي إلى سطح المكتب على الشبكة.انتهى الجزء الخاص بالفيديو.أحتاج إلى تنفيذ الجزء الصوتي.أحتاج إلى طريقة للحصول على بيانات PCM من بطاقة الصوت لتغذيتها إلى برنامج التشفير الخاص بي (يتم تنفيذها باستخدام Windows Media Format).

أعتقد أن الإجابة مرتبطة بوظائف openMixer() وwaveInOpen() في Win32 API، لكنني لست متأكدًا تمامًا مما يجب علي فعله.

كيفية فتح القناة اللازمة وكيفية قراءة بيانات PCM منها؟

شكرا لك مقدما.

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

المحلول

لا أعتقد أن هناك طريقة مباشرة للقيام بذلك باستخدام نظام التشغيل - فهي ميزة قد تكون (أو لا تكون) موجودة على بطاقة الصوت.تحتوي بعض بطاقات الصوت على واجهة استرجاع - يطلق عليها Creative اسم "What U Hear".يمكنك ببساطة تحديد هذا كمدخل بدلاً من الميكروفون، والتسجيل منه باستخدام waveInOpen() العادي الذي تعرفه بالفعل.

إذا لم تكن بطاقة الصوت تحتوي على هذه الميزة، فأعتقد أنك لم يحالفك الحظ بخلاف القيام بشيء مجنون مثل إنشاء برنامج التشغيل الخاص بك.أو يمكنك إقناع المستخدمين بتشغيل كابل من مخرج السماعة إلى مدخل الخط :)

نصائح أخرى

تتمتع واجهات برمجة تطبيقات Windows Vista Core Audio الجديدة بدعم لهذا الأمر بشكل صريح (يسمى Loopback Recording)، لذلك إذا كان بإمكانك العيش مع تطبيق Vista فقط، فهذا هو الطريق الصحيح.

انظر تسجيل الاسترجاع مقالة على MSDN للحصول على إرشادات حول كيفية القيام بذلك.

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