سؤال

أحتاج إلى معرفة متوسط ​​حجم ملف mp3 بحيث عندما أقوم بتحويله إلى mp3 (بمعدل بت مختلف) يمكنني تغيير حجم الصوت أيضًا، لتطبيعه...

لذلك أحتاج إلى أداة سطر الأوامر/مكتبة روبي التي تعطيني متوسط ​​الحجم بالديسيبل.

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

المحلول

يمكنك استخدام sox (أداة صوتية مفتوحة المصدر لسطر الأوامر http://sox.sourceforge.net/sox.html) لتطبيع ملفاتك وتحويلها في نفس الوقت.

يحرر

يبدو أنه ليس لديه خيارات لمعدل البت.على أي حال، ربما يكون سوكس مبالغًا فيه إذا قام LAME بالتطبيع.

نصائح أخرى

يمكنك استخدام عاجِز للتشفير إلى mp3.لديه خيارات للتطبيع والقياس ومعدل البت.يتم تجميع LAME أيضًا على أي نظام أساسي تقريبًا.

http://mp3gain.sourceforge.net/ هو حل مدروس لهذا الغرض.

لقد كتبت نصًا مجمعًا صغيرًا، بناءً على الإدخال أعلاه:

#!/bin/sh

# Get the current volume (will reset to this later).
current=`amixer -c 0 get Master 2>&1 |\
    awk '/%/ {
              p=substr($4,2,length($4)-2);
              if( substr(p,length(p)) == "%" )
                 {
                 p = substr(p,1,length(p)-1)
                 }
             print p
             }'`

# Figure out how loud the track is.  The normal amplitude for a track is 0.1. 
#   Ludicrously low values are 0.05, high is 0.37 (!!?)
rm -f /tmp/$$.out
/usr/bin/mplayer -vo null -ao pcm:file=/tmp/$$.out $1 >/dev/null 2>&1
if [ $? = 0 ] ; then
    amplitude=`/usr/bin/sox /tmp/$$.out -n stat 2>&1 | awk '/RMS.+amplitude/ {print $NF}'`
fi
rm -f /tmp/$$.out

# Set an appropriate volume for the track.
to=`echo $current $amplitude | awk '{printf( "%.0f%%", $1 * 0.1/$2 );}'`
echo $current $amplitude | awk '{print "Amplitude:", $2, "  Setting volume to:", 10/$2 "%,  mixer volume:", $1 * 0.1/$2}'
amixer -c 0 set Master $to  >/dev/null 2>&1

mplayer -quiet -cache 2500 $1

# Reset the volume for next time.
amixer -c 0 set Master "$current%"  >/dev/null 2>&1

يستغرق الأمر ثانية إضافية لبدء تشغيل الملف، ويعتمد على alsamixer لضبط مستوى الصوت، ولكنه يقوم بعمل رائع حقًا في منعك من الاضطرار إلى تعديل مستوى الصوت الرئيسي باستمرار.ولا يهمه حقًا ما هو تنسيق الإدخال، لأنه إذا كان mplayer يمكنه تشغيله على الإطلاق، فيمكنه استخراج الصوت، لذلك يجب أن يعمل بشكل جيد مع MP3، Ogg، AVI، أيًا كان.

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