تشغيل MP3 باستخدام Remoteio و Audiounits على iPhone ... ممكن؟

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

  •  13-09-2019
  •  | 
  •  

سؤال

أريد تشغيل ملف MP3 بدلا من ملف غير مضغوط باستخدام RemoteIO / Audiounit. باستخدام الملفات غير المضغوطة يستخدم بوضوح مساحة الأقراص إلى حد بعيد (30 ميجابايت مقابل 3 ميجابايت ل MP3).

هل هذا ممكن؟ إذا كان الأمر كذلك، فهل يمكنك توفير رمز القليل من التعليمات البرمجية؟

مليون شكرا.

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

المحلول

نعم هذا ممكن. ولكنه يتطلب استخدام API المتعدد ومحاوضات متعددة.

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

سيكون ما سوف ينتهي به الأمر مع أنه سيكون مشابها لإعادة كتابة طبقة API قائمة انتظار الصوت، ولكن بمزيد من التخصيص.

نصائح أخرى

كيف منخفض المستوى تريد أن تذهب؟ يمكنك استخدام API AudiohardWare:

err = AudioDeviceAddIOProc(deviceID, ioProc, self);

وفي IPROC الخاص بك، قم بملء المخازن المؤقتة بنفسك، والاستماع إلى تغييرات الأجهزة، والتعامل مع خيوط في الوقت الفعلي والكثير من الأشياء الأخرى المنخفضة المستوى.

أفترض أنك تقوم بالفعل بفك بيانات MP3 بالفعل باستخدام Audioconverter ومعرفة كيفية القيام بذلك.

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