سؤال

أستخدم حاليًا فصول Audiotrack و Audiorecord في Android.

أستخدم بيانات PCM النقية ولكني كنت أتساءل ما هي خياراتي لمرمز برامج الترميز الأخرى؟

من هذه الصفحة يبدو أنه لا يمكنني الترميز وفك الشفرة إلا باستخدام AMR Narrowband؟

أقوم حاليًا بإعداد فصول الصوت على النحو التالي:

arec = new AudioRecord(MediaRecorder.AudioSource.MIC,
                     11025,
                     AudioFormat.CHANNEL_CONFIGURATION_MONO,
                     AudioFormat.ENCODING_PCM_16BIT,
                     buffersize);

atrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL,
                     11025,
                     AudioFormat.CHANNEL_CONFIGURATION_MONO,
                     AudioFormat.ENCODING_PCM_16BIT,
                     buffersize,
                     AudioTrack.MODE_STREAM);

لذا فإن سؤالي هو كيف يمكنني تغيير الترميز من PCM إلى أحد برامج الترميز الأخرى المدعومة؟

عندما أحاول تغيير encoding_pcm_16bit على Audioformat ، أحصل فقط على خيارات الترميز الافتراضي أو غير صالح مع خيارات PCM.

أي روابط للدروس التعليمية حول ترميز الصوت وفك تشفيره على Android ستكون رائعة إذا كان أي شخص يعرف أي مساعدة أو أي مساعدة هنا موضع تقدير كبير.

شكرًا

تعديل: لقد غيرت الكود إلى ما يلي:

arec = new AudioRecord(MediaRecorder.AudioSource.MIC,
                     11025,
                     AudioFormat.CHANNEL_CONFIGURATION_MONO,
                     **MediaRecorder.AudioEncoder.AMR_NB**,
                     buffersize);

atrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL,
                     11025,
                     AudioFormat.CHANNEL_CONFIGURATION_MONO,
                     **MediaRecorder.AudioEncoder.AMR_NB**,
                     buffersize,
                     AudioTrack.MODE_STREAM);

يتم تشغيل الكود بشكل صحيح ، لكنني أتساءل هل يقوم بالفعل بتشفير الصوت على أنه AMR_NB وإذا لم تكن هذه طريقة مناسبة للقيام بذلك؟

كنت أحصل على سعة عازلة عند استخدام PCM RAW ولكن لم يظهر أي منها منذ استخدام الكود الجديد مع mediArecorder.audioencoder.amr_nb المستخدم بدلاً من Audioformat.pcm

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

المحلول

كما ينص الوثائق على AudioRecord و AudioTrack:

audioFormat     the format in which the audio data is represented. See ENCODING_PCM_16BIT and ENCODING_PCM_8BIT

يمكنك فقط العمل مع PCM 8 بت و 16 بت. إذا كنت تريد الصوت بتنسيقات أخرى ، إما لا تستخدم AudioRecord و AudioTrack (محاولة MediaRecorder و MediaPlayer) أو سيتعين عليك نقل الرمز باستخدام الكود الخاص بك ، وربما الاستفادة من NDK.

AudioRecord و AudioTrack تم تصميمها خصيصًا للحالات التي لا يتم فيها دعم الصوت المعني بواسطة محرك Opencore Multimedia ، إما لأنه ليس برامج ترميز مدعومة أو ليس بروتوكول تدفق مدعوم (على سبيل المثال ، SIP).

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