سؤال

أنا بناء تطبيق Karaoke باستخدام PhoneGap ل iOS.

لدي ملفات صوتية في مجلد شبكة الاتصالات العالمية / الأصول التي يمكنني تشغيلها باستخدام وظيفة Media.Play ()

يسمح للمستخدم الاستماع إلى مسار الدعم. في حين أن الوسائط تلعب مثيل وسائط آخر هو التسجيل.

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

نهج واحد اعتقدت أنه قد يعمل هو استخدام API Web Audio - لدي التعليمات البرمجية التالية التي أخذتها من HTML5 Rocks والتي تقوم بتحميل الملفين في Audiocontext ويسمح لي باللعب في وقت واحد. ومع ذلك، ما أود القيام به هو كتابة المخزن المؤقتين في ملف واحد .wav. هل هناك أي طريقة يمكنني الجمع بين Source1 و Source2 في ملف جديد واحد؟

giveacodicetagpre.

قد يكون هناك شيء في هذا الحل كيف أقوم بتحويل مجموعة من البيانات الصوتية إلى ملف WAV؟ بقدر ما أستطيع أن أجعلها تشذها في المخازن المؤقتة وترميزها كأفوة ولكن لا يمكنني معرفة أين إنهم يكتبونهم إلى ملف (حفظ ملف WAV الجديد) أي أفكار؟

الإجابة أدناه - لا يساعد حقا لأنني أستخدم Web Audio API (JavaScript) وليس iOS

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

المحلول

الحل كان استخدام OfflineAudiocontext

الخطوات كانت: 1. قم بتحميل الملفين كمخزن مؤقتا باستخدام BufferLoader 2. إنشاء OfflineAudioContext 3. قم بتوصيل المخازن المؤقتة إلى OfflineAudioContext 4. ابدأ اثنين من المخازن المؤقتة 5. استخدم وظيفة Startstrending غير المتصلة 6. اضبط وظيفة offfline.oncomplete للحصول على مقبض على RenderedBuffer.

إليك الرمز:

giveacodicetagpre.

نصائح أخرى

أود أن أقترح خلط PCM مباشرة.إذا قمت بتهيئة المخزن المؤقت يتداخل الإطارات الزمنية كلا المسارين، فإن الصيغة مضافة:

mix (a، b)= a + b - a * b / 65535.

تعتمد هذه الصيغة على أعداد صحيحة من 16 بت غير موقعة.إليك مثال:

giveacodicetagpre.

قد يكون هذا وسيلة فعالة للغاية للتعامل مع الصوت 16 بت الموقع. اذهب هنا للمصدر

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