এমপি 3 ফাইলে শব্দ কীভাবে স্বাভাবিক করা যায়


39

আমি আমার কাছে থাকা এমপি 3 ফাইলগুলিতে শব্দটি স্বাভাবিক করার উপায় খুঁজছি। কারও কারও কম শব্দ আছে, আবার অন্যগুলি আরও জোরে তাই গানের উপর নির্ভর করে আমাকে ভলিউমটি উপরে বা নীচে পরিণত করতে হবে। সমস্ত ফাইলের জন্য এটি করার কী উপায় রয়েছে। আমি বিশেষত এটি টার্মিনালের মাধ্যমে করতে চাই তবে জিইউআই উপায়গুলিও মেনে নেওয়া হয়েছে।


খেলার সময় স্বাভাবিক করার জন্য দেখুন: Askubuntu.com/questions/95716/… । তবে এটি আপনার এমপি 3 ফাইলের সামগ্রী পরিবর্তন করবে না - এতে সুবিধা হতে পারে;)
তকাত

বাজানোর সময় নয়, প্রতিবার এটি সেট করতে বা কোনও প্লেয়ার যখনই আমি গান শুনতে চাই সেটিকে স্বাভাবিক করতে চাই না। উদাহরণস্বরূপ, আসুন আমরা বলি যে আমি গানগুলিকে একটি আইপিড শ্যাফলে বা একটি পেনড্রাইভে এমপি 3 সক্ষম প্লেয়ার শুনতে শুনতে অনুলিপি করতে চাই।
লুইস আলভারাদো

@ তাটকাত বিটিডব্লিউ অন্যান্য প্রশ্নে দুর্দান্তভাবে সম্পন্ন করেছেন। ভাল তথ্য।
লুইস আলভারাদো

1
আমার স্ত্রী সবেমাত্র অডাসিটি পদ্ধতি পরীক্ষা করেছেন এবং এটি পুরোপুরি কার্যকর হয়েছিল! প্রস্তাবিত। দয়া করে, লোকেরা যখন পরামর্শের জন্য জিজ্ঞাসা করে তবে এটি বিশেষজ্ঞ নয়। সুতরাং তাদেরকে কমান্ড লাইন সরঞ্জামগুলি ব্যবহার করতে বলবেন না যখন তারা শ্রুতিমধুর মতো সহজে বোঝার গ্রাফিকাল সরঞ্জামগুলি দিয়ে কাজ করতে পারে। নতুন লিনাক্স ব্যবহারকারীদের টার্মিনালটি খুলতে এবং কমান্ড লাইন সরঞ্জামগুলি চালানোর জন্য উইন্ডোজটি সহজ, এই অনুভূতি সহ উবুন্টু থেকে তাদের ভয় দেখাবে, লিনাক্স কঠিন। ডস মারা গেছে এতে অবাক হওয়ার কিছু নেই, তবে উইন্ডোজ জীবিত।

এটি দুর্দান্ত যে আপনার স্ত্রী গ্রাফিকাল উপায়ে বের করতে পেরেছিলেন, তবে আপনি যে অংশটি প্রশ্ন করছেন তিনি বিশেষভাবে টার্মিনালের মাধ্যমে এটি অর্জন করতে চেয়েছিলেন?
রিচার্ডপি

উত্তর:


22

স্পর্ধা

অডেসিটির সাহায্যে আমরা তালিকার অনেকগুলি ফাইলের রূপান্তর বা প্রভাব প্রয়োগ করতে সহজেই প্রক্রিয়া ফাইলগুলি ব্যাচ করতে পারি । এটি করার জন্য আমাদের প্রথমে একটি "চেইন" সংজ্ঞায়িত করতে হবে যা আমরা প্রয়োগ করতে চাই প্রভাবগুলি অন্তর্ভুক্ত।

এটি "ফাইল -> সম্পাদনা চেইন ..." দিয়ে সম্পন্ন হয়েছে । এখন খোলার উইন্ডোতে একটি নতুন চেইন সন্নিবেশ করতে নীচে বাম দিকে অ্যাড বোতাম টিপুন (এটি একটি বুদ্ধিমান নাম দিন):

এখানে চিত্র বর্ণনা লিখুন

তারপরে প্রভাবটি চয়ন করুন এবং শৃঙ্খলে প্রবেশ করানোর জন্য এটির পরামিতিগুলি (এখানে ডিফল্ট মান এবং নরমালাইজ এফেক্টের জন্য দেখানো হয়েছে)।

গুরুত্বপূর্ণ: ফলস্বরূপ ডিস্কে রূপান্তরটি সংরক্ষণের জন্য আমাদের সর্বদা "এমপি 3 এক্সপোর্ট" (বা অন্য কোনও রফতানি ফর্ম্যাট) প্রভাব যুক্ত করা দরকার ।

এটি করা হলে ছুটি দিয়ে এই উইন্ডোটি ঠিক আছে খুলতে "ফাইল -> চেন প্রয়োগ ..." । আমরা সবেমাত্র তৈরি করা চেইনটি নির্বাচন করুন এবং "ফাইলগুলিতে প্রয়োগ করুন ..." দিয়ে আপনার প্রয়োজনীয় সমস্ত ফাইল লোড করুন । খোলা ফাইল চয়নকারী থেকে বেশ কয়েকটি ফাইল নির্বাচন করা যেতে পারে।

এখানে চিত্র বর্ণনা লিখুন

প্রসেস করা ফাইলগুলি মূলের পথে একটি নতুন সাব ডিরেক্টরিতে "পরিষ্কার" সংরক্ষণ করা হবে be


সক্স

সংস্করণ থেকে> 14.3 আমরা --normকমান্ড লাইনে অডিও স্বাভাবিক করার জন্য বা ব্যাচ প্রসেসিংয়ের জন্য sox ফিল্টারটি ব্যবহার করতে পারি :

sox --norm infile outfile

এমপি 3-সাপোর্ট লিবসক্স-এফএমটি-সমস্ত দিয়ে সোসে যুক্ত হয়েছে:

sudo apt install sox libsox-fmt-all

2
এই সরঞ্জামগুলি কী ডিকোড করে পুনরায় এনকোড করে?
কেড

আপনি পুনরায় এনকোডিং ছাড়াই স্বাভাবিক করতে পারবেন না, কমপক্ষে স্তরগুলি ...
টাকাত

এলএডিএসপিএ এবং পালসোদিও ব্যবহার করে অ-ধ্বংসাত্মক লাইভ-সাধারণকরণের জন্য জিজ্ঞাসা করুন বুনুন
প্রশ্নগুলি /

এটি পুনরায় এনকোড করে, তাই এটি মান হ্রাস করে। আপনি যদি আপনার ফাইলের মান সংরক্ষণ করতে চান তবে আমার উত্তরটি দেখুন। আপনার প্লেয়ার যদি ভলিউম ট্যাগিং সমর্থন করে তবে পুনরায় এনকোডিং প্রয়োজন হয় না।
Wil

1
আপনি for f in *.mp3; do sox --norm "$f" /tmp/sox.mp3; mv -v /tmp/sox.mp3 "$f"; done
ব্যাচটিতে স্যাক্স

30

@ এমপিথেন দেখুন একবারে যা আমার জন্য স্বাভাবিক-অডিওর চেয়েও ভাল

mp3gain -r *.mp3

আর একটি দরকারী সংস্করণ হ'ল-সি হতে পারে যা আপনি অনেকগুলি ফাইলের পরিবর্তন করতে চান কিনা তা জিজ্ঞাসা করতে বাধা দেয়:

mp3gain -c -r *.mp3

ম্যান পেজে যেমন বলেছেন:

এমপি 3 গেইন কেবলমাত্র নরমালাইজারীকরণগুলি যেমন পিক নরমালাইজেশন করে না। পরিবর্তে, ফাইলটি মানুষের কানে আসলে কী জোরে শোনায় তা নির্ধারণ করার জন্য এটি কিছু পরিসংখ্যান বিশ্লেষণ করে। এছাড়াও, এমপি 3 গেন পরিবর্তনগুলি সম্পূর্ণরূপে ক্ষতিহীন। পরিবর্তনে কোনও গুণমান হারাতে পারেনি কারণ প্রোগ্রামটি এমপি 3 ফাইলটি সরাসরি ডকোডিং এবং পুনরায় এনকোডিং ছাড়াই সামঞ্জস্য করে।

দ্রষ্টব্য : উবুন্টু 15.04 এর ভিত্তিতে সেই প্যাকেজটি সরানো হয়েছে।

python-rgainদেবিয়ান প্যাকেজটি প্রতিস্থাপন হিসাবে প্রস্তাব করে (সুবিধাটি হ'ল 'রিপ্লেইগেইন' ওগ ভারবিস, ফ্ল্যাক, ওয়েভপ্যাক এবং এমপি 3 নামে একাধিক ফাইল ফর্ম্যাটকে সমর্থন করে Also এছাড়াও এটি আপনাকে সেই ফাইলের যে কোনও ধরণের বিদ্যমান রিপ্লে লাভের তথ্য দেখতে দেয়)) এটি ইনস্টল করার পরে, চালান replaygain

টার্মিনাল থেকে পাইথন-রেগেইন ইনস্টল করতে কমান্ডটি চালান

sudo apt-get install python-rgain

অন্যথা, পেতে .debথেকে (সাম্প্রতিক) 14.04 জন্য ফাইল এখানে । যথারীতি ইনস্টল করুন। এর পরে, sudo apt-get -f installকিছু নির্ভরতার সমস্যাগুলি সংশোধন করার জন্য আপনাকে দৌড়াতে হবে।


1
এছাড়াও, আপনি যদি টার্মিনালটি ব্যবহার করতে না চান, তবে এর জন্য একটি জিইউআই উপলব্ধ রয়েছে যার নাম দেওয়া হয়েছে ইম্পেম্প 3 গেইন-জিটিকে, যা এটি খুব সহজ করে তোলে!
gilbertohasnofb

এটি অত্যন্ত দরকারী। আমি এমপিথ্যাগেইনের উইন্ডোজ জিইউআই ব্যবহার করে স্বাভাবিককরণের গুণগত মান দেখে খুব মুগ্ধ হয়েছিলাম, সুতরাং যখন আমার লিনাক্স কমান্ড লাইন সমাধানের প্রয়োজন হয়েছিল তখন আমি এই উত্তরটি পেয়ে খুশি হয়েছি। স্পষ্টভাবে অন্যদের কথা বলতে চান।
অ্যালেক্স পি। মিলার

আপনি কীভাবে এটি ইনস্টল করবেন সে সম্পর্কে কিছু তথ্য যুক্ত করতে পারেন? এটি ডিফল্টরূপে উবুন্টুর সাথে আসে না এবং আমি প্যাকেজটি খুঁজে পাই না।
Bżażej মিশালিক

ধন্যবাদ ... উবুন্টু 16.04 এ কোনও নির্ভরতার ত্রুটি ছাড়াই পাইথন-রেগেইন ইনস্টল করা হয়েছে।
ভারত মল্লাপুর

এর সাথে ইনস্টল করুনmkdir mp3gain; cd mp3gain; wget https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/mp3gain/1.5.2-r2-6/mp3gain_1.5.2-r2.orig.tar.gz; tar -xvzf mp3gain_1.5.2-r2.orig.tar.gz; make; sudo make install
রুবু 77

14

আমি এই প্রকল্পটি নরমালাইজ করব , এটি অডিও ফাইলগুলি স্বাভাবিক করার জন্য একটি কমান্ড-লাইন সরঞ্জাম। আপনার যা প্রয়োজন ঠিক তা হ'ল মনে হচ্ছে। ব্যাচ প্রসেসিং করতে পারে এবং মধ্যবর্তী ফর্ম্যাটগুলিতে পুনরায় মডেলিংয়ের প্রয়োজন হয় না।

এটি প্যাকেজ রেপোতে নরমালাইজ-অডিও হিসাবে রয়েছে sudo apt-get install normalize-audio। এটি ডেবিয়ান দ্বারা প্রবাহিত আপস্ট্রিম যাতে এটি এলটিএস বা আরও নতুন কিছু হতে পারে এবং এমপি 3 এর সামঞ্জস্যের (পরীক্ষিত) দিয়ে নির্মিত। man normalize-audioবিকল্পগুলি অন্বেষণ করার জন্য একটি ভাল ম্যানপেজ রয়েছে তবে কমান্ডগুলি ডিফল্টগুলি ভালভাবে কাজ করে। ব্যাচ প্রসেসিংয়ের জন্য (একাধিক ফাইল জুড়ে ভলিউমকে স্বাভাবিক করুন) normalize-audio -b *.mp3বা ওয়াইল্ডকার্ড ব্যবহার না করে পৃথক ফাইলের নাম নির্দিষ্ট করুন।


ওপি এটি করার জন্য নির্দেশনা চায়। আপনি কি সরবরাহ করতে পারেন?
শেঠ

@ISeth আমি উত্সটি মন্তব্য সম্পর্কে প্রাথমিকভাবে ভুল ছিলাম কারণ আমি এটিপ-ক্যাশে অনুসন্ধানের সাথে এটি খুঁজে পাইনি। আমি দেব প্যাকেজ সম্পর্কিত বিশদ আপডেট করেছি।
শান_ম

এটি একটি ভাল বিকল্প বলে মনে হচ্ছে তবে সঠিক এনকোডারটি খুঁজে পাচ্ছেন না এবং "কোনও এনকোডার উপলব্ধ নেই" থেকে পরিত্রাণ পাবেন । সঙ্গে চেষ্টা করা libsox-fmt-mp3, libavcodec-extra-b *.mp3শুধুমাত্র একটি (এলোমেলো?) ফাইল দিয়ে কিছু করুন।
পাবলো এ

4

replaygain

দ্রুত এবং সহজ replaygain:

এই প্যাকেজটি অডিও ফাইলগুলির পুনরায় খেলুন প্রাপ্ত মানগুলি গণনা করতে এবং মানগুলি অনুসারে এই ফাইলগুলির ভলিউমকে স্বাভাবিক করতে একটি পাইথন প্যাকেজ সরবরাহ করে । এই ক্ষমতাগুলি ব্যবহার করে দুটি বুনিয়াদি স্ক্রিপ্টগুলিও প্রেরণ করা হয়।

রিপ্লে গেইন একটি প্রস্তাবিত স্ট্যান্ডার্ড যা অডিও ফাইলগুলিতে ভলিউমের বিবিধ সমস্যা সমাধানের জন্য ডিজাইন করা।

ইনস্টল করুন: sudo apt install python-rgain

replaygain --force *.mp3
  • -f, --force ফাইলটিতে ইতিমধ্যে লাভের তথ্য থাকলেও পুনরায় গণনা পুনরায় গণনা করুন।

যেহেতু কেবল গণনা / পরিবর্তন পুনরায় খেলনা মান, তাও দ্রুত: একটি গড় পিসি (ইন্টেল i7-6500U, 8 গিগাবাইট র‌্যাম) এর সাথে হার ছিল ~ 20 ফাইল / মিনিট।

উল্লেখ


3

এর স্বার্থে, আমি আমার 2 সেন্ট ছুড়ে দেব I আমি ঠিক একই জিনিসটি খুঁজছিলাম (কেবল ওগ ফাইলের জন্য) এবং ক্রাঞ্চবাং ফোরামে একটি থ্রেড শুরু করেছি। আপনি এটি এখানে দেখতে পারেন: সাধারণ-অডিও এমপি 3 ডিকোডার খুঁজে পাচ্ছেন না

মূলত আমার সমাধানটি # 8 পোস্টের স্ক্রিপ্ট ছিল। এটি এমপি 3, ফ্ল্যাক এবং ওজি ইনপুট ফাইলগুলির জন্য কাজ করে, সম্ভবত অন্যরা কিন্তু অবশ্যই wav নয়।

কেবল একটি ফাইল তৈরি করুন (আপনি যা খুশি তাই এটি নাম দিন, আমি আমার ডিবি_এডজাস্ট_ এমপি 3), chmod + x বলেছি এবং এটি আপনার bin / বিন ফোল্ডারে আটকে দিন। এটি কোনও নিখোঁজ কোডেক ডেটাও পূরণ করে। উদাহরণ:

আসল ফাইল: 16._This_Protector.mp3: Audio file with ID3 version 2.3.0, contains:

বনাম

সাধারণ ফাইল: 16._This_Protector.mp3: Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, JntStereo

আমি এখানে নরমালাইজ-এমপি 3 ব্যবহার করতে স্ক্রিপ্টটি পরিবর্তন করেছি যাতে আপনি চাইলে এটি ব্যবহার করতে পারেন:

#!/bin/bash

find "$1" -iname "*.""$2" > $HOME/file_list

cat $HOME/file_list | while read line; do
#  echo "$line"
  orig_gain="$(normalize-mp3 -n "$line" | cut -d 'd' -f1)"
  larger=$(echo "$orig_gain"'>'-12 | bc)
  if [[ larger ]]
    then
      gain_difference=$(echo "$orig_gain"*-1-12 | bc)
    else
      gain_difference=$(echo "$orig_gain"-12 | bc)
  fi
  echo "Gain Difference will be: $gain_difference""db"
  normalize-ogg --mp3 --bitrate "$3" -g "$gain_difference""db" -v "$line"
done

এই স্ক্রিপ্টটি বর্তমান ডিবি স্তর এবং -12 ডিবি-র মধ্যে পার্থক্য গণনা করে, তারপরে লাভটি -12 ডিবিতে রাখার জন্য একটি গেইন অ্যাডজাস্টমেন্ট প্রয়োগ করে, যা আমি খুঁজে পেয়েছি আমার পক্ষে সবচেয়ে ভাল কাজ করে। এটি পাশাপাশি পুনরাবৃত্ত হয়, যা অনেকগুলি সাবফোল্ডারে পুরো সংগীত সংগ্রহ বা ফাইলগুলি করার জন্য দুর্দান্ত করে তোলে। আপনি যদি আলাদা ডিবি স্তর নির্ধারণ করতে চান তবে "12" সংখ্যার উভয় দৃষ্টান্তই আপনি যে ডিবি স্তরটি ব্যবহার করতে চান তা পরিবর্তন করুন। আমি আমার ক্রাঞ্চব্যাং থ্রেডে পোস্ট করার সাথে সাথে ব্যবহারটি নিম্নরূপ:

normalize-mp3 <directory> <file extenstion(with no leading dot)> <bitrate>

যাইহোক, আমি যখন এমপি 3 ফর্ম্যাটে আমার সংগীত লাইব্রেরিটি রাখতাম তখন ফিলিপের পরামর্শ মতো আমি এমপি 3 গেইনও ব্যবহার করতাম। এর মৃত সরলতা দুর্দান্ত এবং আমি সত্যিই এটি পছন্দ করেছি। নরমালাইজ-অডিওতে সমস্যাটি হ'ল এটি ফাইলগুলিকে একটি রি-এন্ডকোড ডিকোড করে, তাই কিছু শব্দ অবক্ষয় হয়। তবে আপনি যদি অডিওফাইল না হন এবং আপনার এমপি 3 এর উচ্চ বিটরেটে এনকোড করা না থাকে তবে আপনার খুব বেশি পার্থক্য লক্ষ্য করা উচিত নয়।

যদিও আমি এমপি 3 লাভের সাথে লক্ষ্য করেছি যে তা হ'ল যে বিকল্পগুলি আমি চেষ্টা করেছিলাম তা আমার সংগ্রহের সমস্ত কিছুই ঠিক একই ডিবি স্তর হিসাবে পেতে পারি না, যা আমি চাই যা তাই আমাকে কখনই একটি ট্র্যাক থেকে ভলিউম সামঞ্জস্য করতে হবে না পরবর্তী. এই স্ক্রিপ্ট ঠিক যে কাজ করে। এতক্ষণ বয়ে যাওয়ার জন্য দুঃখিত। আশাকরি এটা সাহায্য করবে.


0

আমি নীলের উত্তরটি সবচেয়ে পছন্দ করেছি, কারণ এটি অডিও ফাইলগুলির মধ্যে পারস্পরিক সম্পর্ক প্রবর্তন করে না: কেবল একটি লাভের স্তর বেছে নিন এবং এটিতে সমস্ত কিছু সামঞ্জস্য করুন।

তবে আমার কাছে normalize-oggথাকা কিছু ফাইলের আউটপুট বিশ্লেষণ করতে আমার কিছু সমস্যা হয়েছিল । bcএটির সাথে একটি বাজে সমস্যা রয়েছে : এটি আসল গোলটি করে না, এটি কেবল ছাঁটাই হয়।

সুতরাং শেষ পর্যন্ত আমি শেল স্ক্রিপ্টিং ছেড়ে দিলাম এবং পাইথনে চলে গেলাম।

দ্রষ্টব্য 1: এক্সিফ্টোল অংশটি ওভারকিল হতে পারে তবে আমি 100% নিশ্চিত হতে চেয়েছিলাম যে আসল বিটরেটটি সংরক্ষণ করা হবে।

Note2: এই হবে ওভাররাইট মুল, যদি আপনি তাদের সংরক্ষণ স্বাভাবিক-OGG গত কলে --backup ব্যবহার করতে চান। তবে আমি অনুলিপি পৃথক, নিরাপদ, ডিরেক্টরিতে রাখতে আরও ব্যবহারিক বলে মনে করেছি।

দ্রষ্টব্য: এই দ্রষ্টব্যটি ওজগ ফাইলগুলির সাথে ডিল করে, তবে এটি এমপি 3 এর সাথে খাপ খাওয়ানোর ক্ষেত্রে তুচ্ছ, কেবল "ওগ" এর উপস্থিতিগুলিকে "এমপি 3" এর সাথে প্রতিস্থাপন করে।

এই সমস্যাটি আমার গ্রহণ করা। সর্বশেষতম সংস্করণটি এখানে পাওয়া যাবে: regain.py

#!/usr/bin/python3
"""
Parallel normalize gains
"""
'
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
'

# Absolute value, in dB for the desired gain of each file
TARGET_GAIN = -12

# 
MAX_THREADS = 2

from subprocess import Popen, PIPE
from multiprocessing.dummy import Pool as ThreadPool
from os import listdir
import logging

def initlogger(logfile="log.log", mainlevel=logging.DEBUG,
               filelevel=logging.DEBUG, consolelevel=logging.DEBUG):
    '''initlogger'''
    # create logger 
    logger = logging.getLogger()
    logger.setLevel(mainlevel)
    # create file handler which logs even debug messages
    fh = logging.FileHandler(logfile)
    fh.setLevel(filelevel)
    # create console handler also logging at DEBUG level
    ch = logging.StreamHandler()
    ch.setLevel(consolelevel)
    # create formatter and add it to the handlers
    formatter = logging.Formatter("%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s]  %(message)s")
    fh.setFormatter(formatter)
    ch.setFormatter(formatter)
    # add the handlers to the logger
    logger.addHandler(fh)
    logger.addHandler(ch)

def logcommand(command=[]):
    '''logcommand'''
    if not isinstance(command, list):
        return "", "", -1
    logging.info("Command:\n" + " ".join(command) + "\n")
    proc = Popen(command, stdin=PIPE, stdout=PIPE, stderr=PIPE)
    output, err = proc.communicate()
    output = output.decode("utf-8")
    err = err.decode("utf-8")
    logging.info("Output:\n" + output + "\n")
    logging.info("Error:\n" + err + "\n")
    logging.info("Return Code:\n" + str(proc.returncode) + "\n")
    return output, err, proc.returncode

def regain(target):
    '''regain'''
    logging.info("============================ Start File  ============================")
    logging.warning(target["name"])
    logging.info("Extracting gain info.\n")
    commandgetlevels = ['normalize-ogg', '-n', target["name"]]
    output, err, retcode = logcommand(commandgetlevels)

    level  = output.split()[0]
    logging.debug("Level: " + level)
    if "dBFS" in level:
        level = level.split("dBFS")[0]
    level = level.replace(',', '.')
    level = int(round(float(level)))
    delta = target["gain"] - level
    logging.info("Required adjustment: " + str(delta) + "\n")
    if delta is 0:
        logging.warning(target["name"] + " is already at the correct level")
        return 0

    logging.info("Extracting average bitrate.\n")
    commandgetinfo = ['exiftool', target["name"]]
    output, err, retcode = logcommand(commandgetinfo)
    bitrate = '0'
    for line in output.split('\n'):
        if 'Nominal Bitrate' in line:
            bitrate = line.split(':')[1].split()[0]
            break
    logging.info("Average bitrate is: " + str(bitrate) + "\n")
    if bitrate is '0':
        logging.error("No valid bitrate found, aborting conversion.\n")
        exit(-1)

    logging.info("Re-normalizing.\n")
    commandrenormalize = ['normalize-ogg', '--ogg', '--bitrate', bitrate,
                          '-g', str(delta) + 'db', target["name"]]
    output, err, retcode = logcommand(commandrenormalize)
    if retcode is not 0:
        log.error("Output:\n" + output)
        log.error("err:\n" + err)
        exit(retcode)

    return retcode

# function to be mapped over
def parallelregain(gain=TARGET_GAIN, threads=MAX_THREADS):
    '''parallelregain'''
    logging.info("Creating thread pool with " + str(threads) + " elements.\n")
    pool = ThreadPool(threads)
    targets = []
    files_list = listdir(".")
    files_list.sort()
    counter = 0
    for filename in files_list:
        if filename.endswith("ogg"):
            target = {
                "name":filename,
                "gain":gain,
            }
            targets.append(target)
            counter = counter + 1
    pool.map(regain, targets)
    pool.close()
    pool.join()

if __name__ == "__main__":
    initlogger(logfile="normalize.log", consolelevel=logging.WARNING)
    parallelregain()
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.