هل تريد تسجيل قناتين في نفس الوقت على Android MediaRecorder أو استخدام AudioRecord؟

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

سؤال

هل يمكنني تسجيل أكثر من قناة في نفس الوقت إما باستخدام MediaRecorder أو AudioRecord؟ما أريده هو أن أكون قادرًا على تسجيل كل من MediaRecorder.AudioSource.VOICE_UPLINK وVOICE_DOWNLINK في نفس الوقت.يمكن أن يكون في ملفين منفصلين أو إلى نفس الملف بقناتين.لقد حاولت استخدام حالتين منفصلتين من MediaRecorder.ولكن فقط أول واحد يسجل.والثاني يقول الإدخال غير متوفر.لقد حاولت أيضًا استخدام MediaRecorder وAudioRecord واحد في نفس الوقت.مرة أخرى، يعمل كلاهما بشكل فردي ولكن عندما يأتي AudioRecord بعد بدء تشغيل MediaRecorder، تظهر الأخطاء التالية.

05-21 03:40:42.735: E/AudioRecord(1322): Could not get audio input for record source 1
05-21 03:40:42.735: E/AudioRecord-JNI(1322): Error creating AudioRecord instance:     initialization check failed.
05-21 03:40:42.825: E/AudioRecord-Java(1322): [ android.media.AudioRecord ] Error code -20     when initializing native AudioRecord object.

لقد حاولت أيضًا وضع MediaRecorder الثاني في موضوع جديد.مرة أخرى نفس النتيجة.وهذا يجعلني أتساءل عما إذا كان من الممكن التسجيل في وقت واحد على الإطلاق.كنت أفكر أيضًا فيما إذا كان بإمكاني استخدام تسجيل صوتي واحد مع قناتين لتعيين مدخلين منفصلين من VOICE_UPLINK وVOICE_DOWNLINK ولكني لا أعرف كيفية تعيين المصادر إذا كان ذلك ممكنًا على الإطلاق.

شكرا لك مقدما

يحرر:

تعني إجابة Lucifer أنه لا يمكن استدعاء AudioRecord بشكل غير متزامن مع تشغيل أكثر من مثيل في نفس الوقت.هل يعرف أحد طريقة يمكن من خلالها تسجيل AudioSource.VOICE_UPLINK وAudioSource.VOICE_DOWNLINK في نفس الوقت؟ربما تستخدم نسخة واحدة من AudioRecord مع قنوات متعددة؟

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

المحلول

حسب معرفتي، التسجيل الصوتي هو طريقة متزامنة.لذلك لا يمكنك استخدام القيام بالتسجيلين في نفس الوقت.

عندما ينتقل الكود الخاص بك إلى عملية التسجيل الثانية فإنه يظهر الخطأ 05-21 03:40:42.735: E/AudioRecord(1322): Could not get audio input for record source 1 مما يعني تمامًا أن قناة التسجيل مشغولة بالفعل بواسطة القناة الأولى.

ومع ذلك، يمكن أن يكون هذا ممكنًا من خلال المعالجة المتوازية لخيطين بطريقة يتم فيها تسجيل الخيط الأول لفترة زمنية محددة.عندما يمر التحكم بخيطين ثانيين، يتوقف الخيط الأول عن التسجيل ويبدأ الخيط الثاني في التسجيل والعكس صحيح.ولكن وفقًا للجهاز المحمول، سيصبح هذا أكثر تعقيدًا.لذا من الأفضل أن تقوم بتسجيل قناة واحدة في كل مرة.

يمكنك إنشاء قائمة انتظار للتسجيل، والتي ستقوم بالتسجيل واحدًا تلو الآخر.

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