اي فون - الكثير من الضوضاء في الملف الصوتي

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

  •  06-07-2019
  •  | 
  •  

سؤال

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

ويمكن للشخص لي نقطة إلى مثال جيد مما يدل على كيفية كتابة بايت الصوت الخام إلى ملف؟ وهنا المنطق الأساسي الذي أنا أتابع

SInt32 leftSample1 = ReadSampleFromFile1(music_iter1);
leftSample1 = (SInt32)((float) leftSample1 * 0.7071); //to avoid clipping

SInt32 leftStereoSample2 = ReadLeftSample(music_iter2);
leftStereoSample2 += leftSample1;
if (leftStereoSample2 > 32767)
leftStereoSample2 = 32767;
else if (leftStereoSample2 < -32768
leftStereoSample2 = -32768;
// write leftStereoSample2 to the file
//do the same as left sample to right sample also

++music_iter2;
++music_iter1;

وشكرا.

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

المحلول

كم مرة هم هؤلاء العائدين صحيح؟

if (leftStereoSample2 > 32767)
leftStereoSample2 = 32767;
else if (leftStereoSample2 < -32768
leftStereoSample2 = -32768;

وفقط لأنك لا لقطة، (لأنك اضطرها لا) لا يعني أنك لن تحصل على التحف (تشويه) وغيرها عند اقتطاع موجات من هذا القبيل. أود أن أرى كيف في كثير من الأحيان ما كان يحدث.

والصوت الأساسية له خلاطات. وقد كتبت الناس الذكية متاحة للتعامل مع هذا النوع من الاشياء بالفعل، لذلك نحن لا يضطر :) MultiChannelMixer هو واحد أن يفعل ستيريو الاختلاط. التحقق من ذلك.

نصائح أخرى

والاختبارات الخاصة بك عن 65535 و-65536 غير صحيحة (ستحتاج 17 بت). محاولة 32767 -32768 و.

ولست متأكدا من سطر من التعليمات البرمجية "لمنع قطة" تقوم به في الواقع انها وظيفة. لن تحتاج إلى تشغيل فعال أسفل <م> على حد سواء تيارات قبل أن ينضم لهم؟

وحاول الجمع بين اثنين من الكثير من الملفات، أكثر هدوءا. وبدلا من 0.7071 على كل الملفات، في محاولة 0.5. أو مجرد استخدام MultiChannelMixer، على النحو الذي اقترحه أران.

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