আমি চাই যে কোনও সিনেমা ক্লিপের উচ্চতম শিখর শব্দটি কোডেকের অনুমতি অনুসারে তত উচ্চতর হয়, তারপরে অন্য প্রতিটি শব্দ যথাযথভাবে প্রশস্ত করা উচিত।
Ffmpeg ব্যবহার করে এটি সম্পাদন করার জন্য ব্যবহারিক উদাহরণ কী?
আমি চাই যে কোনও সিনেমা ক্লিপের উচ্চতম শিখর শব্দটি কোডেকের অনুমতি অনুসারে তত উচ্চতর হয়, তারপরে অন্য প্রতিটি শব্দ যথাযথভাবে প্রশস্ত করা উচিত।
Ffmpeg ব্যবহার করে এটি সম্পাদন করার জন্য ব্যবহারিক উদাহরণ কী?
উত্তর:
বর্তমান এফএফএমপিতে দুটি ফিল্টার রয়েছে যা সরাসরি স্বাভাবিককরণের জন্য ব্যবহার করা যেতে পারে - যদিও তারা ইতিমধ্যে বেশ উন্নত, তাই তারা কেবলমাত্র শীর্ষ স্তরে পৌঁছানোর জন্য লাভ প্রয়োগ করে না। এখানে তারা:
loudnorm
: EBU R128 অনুযায়ী জোরে নরমালাইজেশন। আপনি একটি ইন্টিগ্রেটেড উচ্চতা লক্ষ্য, একটি জোরেতা পরিসীমা লক্ষ্য, বা সর্বোচ্চ সত্য শিখর সেট করতে পারেন। এটি অডিও এবং ভিডিও প্রকাশের জন্য প্রস্তাবিত এবং এটি সারা বিশ্ব জুড়ে সম্প্রচারকরা ব্যবহার করেন।dynaudnorm
: ক্লিপিং ছাড়াই "বুদ্ধিমান" উচ্চস্বরে নরমালাইজেশন, যা ফাইলের উইন্ডোড অংশগুলির উপর গতিশীলভাবে স্বাভাবিককরণ প্রয়োগ করে। এটি শব্দের বৈশিষ্ট্যগুলি পরিবর্তন করতে পারে, তাই এটি সাবধানতার সাথে প্রয়োগ করা উচিত।এছাড়াও, volume
ফিল্টার সাধারণ ভলিউম সামঞ্জস্য সম্পাদন করতে ব্যবহার করা যেতে পারে। আরও অডিও ভলিউম ম্যানিপুলেশন উইকি এন্ট্রি দেখুন।
loudnorm
ফিল্টার এক পাসের সাথে ব্যবহার করা যেতে পারে, কিন্তু এটা দুই পাস, যা আরো সঠিক রৈখিক নিয়মমাফিককরণ সম্ভব সঞ্চালন বাঞ্ছনীয়। এটি স্বয়ংক্রিয়ভাবে কিছুটা শক্ত। এছাড়াও, যদি আপনি 0 ডিবিএফএসে (বা অন্য কোনও লক্ষ্য) একটি "সাধারণ" আরএমএস-ভিত্তিক বা পিক নরমালাইজেশন চান, তবে পড়ুন।
ffmpeg-normalize
সরঞ্জামটি ব্যবহার করুনআমি মিডিয়া ফাইলগুলি স্বাভাবিক করার জন্য পাইথন প্রোগ্রাম তৈরি করেছি , পাইপাইতেও উপলব্ধ । আপনি কেবল:
ffmpeg
আপনার এক্সিকিউটেবল $PATH
পারেন মধ্যে এটি যোগ, উদাহরণস্বরূপ, দ্বারা /usr/local/bin
, অথবা তার ডিরেক্টরির যোগ$PATH
pip install ffmpeg-normalize
ffmpeg-normalize
উদাহরণ স্বরূপ:
ffmpeg-normalize input.mp4 -o output.mp4 -c:a aac -b:a 192k
বা, বেশ কয়েকটি অডিও ফাইলকে কেবল ব্যাচ-স্বাভাবিক করতে এবং আউটপুট ফোল্ডারে সঙ্কুচিত WAV হিসাবে এগুলি লিখতে:
ffmpeg-normalize *.m4a -of /path/to/outputFolder -ext wav
সরঞ্জামটি EBU R128 (ডিফল্ট), আরএমএস এবং শীর্ষকে সমর্থন করে। কটাক্ষপাত আছে ffmpeg-normalize -h
আরো বিকল্পের জন্য এবং চেক README কিছু উদাহরণ জন্য।
এছাড়াও, এটি অন্যান্য এনকোডারগুলির (যেমন, এএসি বা এমপি 3) সাথে পুনরায় এনকোডিং সমর্থন করে বা অডিওকে স্বয়ংক্রিয়ভাবে ভিডিওতে মার্জ করে।
ffmpeg
Ffmpeg এ আপনি volume
ট্র্যাকের ভলিউম পরিবর্তন করতে ফিল্টারটি ব্যবহার করতে পারেন । আপনি প্রোগ্রামটির সাম্প্রতিক সংস্করণটি ডাউনলোড করেছেন তা নিশ্চিত করুন ।
এই গাইডটি পিক স্বাভাবিককরণের জন্য, এর অর্থ এটি ফাইলের সর্বাধিকতম অংশটিকে কিছু কম করার পরিবর্তে 0 ডিবিতে বসিয়ে দেবে। আরএমএস-ভিত্তিক নরমালাইজেশন রয়েছে যা একাধিক ফাইল জুড়ে গড় উচ্চস্বরে একইরকম চেষ্টা করে। এটি করার জন্য, সর্বাধিক ভলিউম 0 ডিবি-তে চাপার চেষ্টা করবেন না, তবে গড় ভলিউমটি পছন্দসই ডিবি স্তরের (যেমন -26 ডিবি) করতে হবে।
প্রথমে আপনার সর্বাধিক ভলিউমের জন্য অডিও স্ট্রিমটি বিশ্লেষণ করতে হবে যা স্বাভাবিককরণ এমনকি প্রদান করে দেয় কিনা তা দেখার জন্য:
ffmpeg -i video.avi -af "volumedetect" -vn -sn -dn -f null /dev/null
উইন্ডোজ /dev/null
দিয়ে প্রতিস্থাপন NUL
করুন। , , এবং আর্গুমেন্ট এই বিশ্লেষণ সময় অ অডিও স্ট্রীম উপেক্ষা করার ffmpeg নির্দেশ দিন। এটি বিশ্লেষণকে মারাত্মকভাবে গতি দেয়।-vn
-sn
-dn
এটি নিম্নলিখিত মত কিছু আউটপুট হবে:
[Parsed_volumedetect_0 @ 0x7f8ba1c121a0] mean_volume: -16.0 dB
[Parsed_volumedetect_0 @ 0x7f8ba1c121a0] max_volume: -5.0 dB
[Parsed_volumedetect_0 @ 0x7f8ba1c121a0] histogram_0db: 87861
আপনি দেখতে পাচ্ছেন, আমাদের সর্বোচ্চ আয়তন -5.0 ডিবি, সুতরাং আমরা 5 ডিবি লাভ প্রয়োগ করতে পারি। আপনি যদি 0 ডিবি এর মান পান তবে আপনার অডিওটি স্বাভাবিক করার দরকার নেই।
এখন আমরা volume
ফিল্টারটি একটি অডিও ফাইলে প্রয়োগ করি । নোট করুন যে ফিল্টার প্রয়োগ করার অর্থ আমাদের অডিও স্ট্রিমটিকে আবার এনকোড করতে হবে। আপনি অডিওর জন্য যা কোডেক চান তা অবশ্যই অবশ্যই মূল ফর্ম্যাটের উপর নির্ভর করে। এখানে কিছু উদাহরন:
সাদামাটা অডিও ফাইল: আপনার যা প্রয়োজন এনকোডার দিয়ে কেবল ফাইলটি এনকোড করুন:
ffmpeg -i input.wav -af "volume=5dB" output.mp3
আপনার বিকল্পগুলি অবশ্যই খুব বিস্তৃত।
AVI ফর্ম্যাট: সাধারণত এমন AVI পাত্রে আসা ভিডিও সহ এমপি 3 অডিও থাকে:
ffmpeg -i video.avi -af "volume=5dB" -c:v copy -c:a libmp3lame -q:a 2 output.avi
এখানে আমরা মানের স্তরটি বেছে নিয়েছি Values মানগুলি 0-9 থেকে কম এবং নিম্নতর মানে আরও ভাল। গুণমান নির্ধারণের জন্য আরও তথ্যের জন্য এমপি 3 ভিবিআর গাইড পরীক্ষা করুন । -b:a 192k
উদাহরণস্বরূপ আপনি একটি স্থির বিটরেটও সেট করতে পারেন ।
এমপি 4 ফর্ম্যাট: একটি এমপি 4 ধারক সহ, আপনি সাধারণত এএসি অডিও পাবেন। আমরা ffmpeg এর বিল্ট-ইন এএসি এনকোডার ব্যবহার করতে পারি।
ffmpeg -i video.mp4 -af "volume=5dB" -c:v copy -c:a aac -b:a 192k output.mp4
এখানে আপনি অন্যান্য এএসি এনকোডার ব্যবহার করতে পারেন। তাদের মধ্যে কিছু ভিবিআরকে সমর্থন করে। দেখুন এই উত্তর এবং এএসি এনকোডিং নির্দেশিকা কিছু টিপস জন্য।
উপরের উদাহরণগুলিতে, ভিডিও স্ট্রিমটি ব্যবহার করে অনুলিপি করা হবে -c:v copy
। আপনার ইনপুট ফাইলে বা একাধিক ভিডিও স্ট্রিমে সাবটাইটেল থাকলে -map 0
আউটপুট ফাইলের নামের আগে বিকল্পটি ব্যবহার করুন ।
ffmpeg-normalize
আপনি 0 ডিবি এবং পিক-নরমালাইজের স্তর নির্ধারণ করার সময়ও এটি সরঞ্জামটি করে।
আমি সেরা বার্তায় মন্তব্য করতে পারি না যাতে এটি করা আমার কুশ্রী বাশ based
ffmpeg -i sound.mp3 -af volumedetect -f null -y nul &> original.txt
grep "max_volume" original.txt > original1.tmp
sed -i 's|: -|=|' original1.tmp
if [ $? = 0 ]
then
sed -i 's| |\r\n|' original.tmp
sed -i 's| |\r\n|' original.tmp
sed -i 's| |\r\n|' original.tmp
sed -i 's| |\r\n|' original.tmp
grep "max_volume" original1.tmp > original2.tmp
sed -i 's|max_volume=||' original2.tmp
yourscriptvar=$(cat "./original2.tmp")dB
rm result.mp3
ffmpeg -i sound.mp3 -af "volume=$yourscriptvar" result.mp3
ffmpeg -i result.mp3 -af volumedetect -f null -y nul &> result.txt
fi
.M4a ফাইলের শব্দ মাত্রা স্বাভাবিক করার জন্য এখানে একটি স্ক্রিপ্ট রয়েছে। শব্দের স্তরগুলি শুরু করার জন্য খুব শান্ত থাকলে তা দেখুন। আপনি যদি সেক্ষেত্রে অডাসটির মতো কিছু ব্যবহার করেন তবে চূড়ান্ত শব্দটি আরও ভাল হতে পারে।
#!/bin/bash
# Purpose: Use ffmpeg to normalize .m4a audio files to bring them up to max volume, if they at first have negative db volume. Doesn't process them if not. Keeps bitrate same as source files.
# Parameters: $1 should be the name of the directory containing input .m4a files.
# $2 should be the output directory.
INPUTDIR=$1
OUTPUTDIR=$2
<<"COMMENT"
# For ffmpeg arguments http://superuser.com/questions/323119/how-can-i-normalize-audio-using-ffmpeg
# and
# https://kdecherf.com/blog/2012/01/14/ffmpeg-converting-m4a-files-to-mp3-with-the-same-bitrate/
ffmpeg -i test.m4a -af "volumedetect" -f null /dev/null
ffmpeg -i test.m4a -af "volumedetect" -f null /dev/null 2>&1 | grep max_volume
# output: max_volume: -10.3 dB
ffmpeg -i test.m4a -af "volumedetect" -f null /dev/null 2>&1 | grep 'max_volume\|Duration'
# Output:
# Duration: 00:00:02.14, start: 0.000000, bitrate: 176 kb/s
# [Parsed_volumedetect_0 @ 0x7f8531e011a0] max_volume: -10.3 dB
ffmpeg -i test.m4a -af "volumedetect" -f null /dev/null 2>&1 | grep max_volume | awk -F': ' '{print $2}' | cut -d' ' -f1
# Output: -10.3
ffmpeg -i test.m4a 2>&1 | grep Audio
# output: Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 170 kb/s (default)
ffmpeg -i test.m4a 2>&1 | grep Audio | awk -F', ' '{print $5}' | cut -d' ' -f1
# output: 170
# This works, but I get a much smaller output file. The sound levels do appear normalized.
ffmpeg -i test.m4a -af "volume=10.3dB" -c:v copy -c:a aac -strict experimental output.m4a
# Operates quietly.
ffmpeg -i test.m4a -af "volume=10.3dB" -c:v copy -c:a aac -strict experimental -b:a 192k output.m4a -loglevel quiet
COMMENT
# $1 (first param) should be the name of a .m4a input file, with .m4a extension
# $2 should be name of output file, with extension
function normalizeAudioFile {
INPUTFILE=$1
OUTPUTFILE=$2
DBLEVEL=`ffmpeg -i ${INPUTFILE} -af "volumedetect" -f null /dev/null 2>&1 | grep max_volume | awk -F': ' '{print $2}' | cut -d' ' -f1`
# We're only going to increase db level if max volume has negative db level.
# Bash doesn't do floating comparison directly
COMPRESULT=`echo ${DBLEVEL}'<'0 | bc -l`
if [ ${COMPRESULT} -eq 1 ]; then
DBLEVEL=`echo "-(${DBLEVEL})" | bc -l`
BITRATE=`ffmpeg -i ${INPUTFILE} 2>&1 | grep Audio | awk -F', ' '{print $5}' | cut -d' ' -f1`
# echo $DBLEVEL
# echo $BITRATE
ffmpeg -i ${INPUTFILE} -af "volume=${DBLEVEL}dB" -c:v copy -c:a aac -strict experimental -b:a ${BITRATE}k ${OUTPUTFILE} -loglevel quiet
else
echo "Already at max db level:" $DBLEVEL "just copying exact file"
cp ${INPUTFILE} ${OUTPUTFILE}
fi
}
for inputFilePath in ${INPUTDIR}/*; do
inputFile=$(basename $inputFilePath)
echo "Processing input file: " $inputFile
outputFilePath=${OUTPUTDIR}/$inputFile
normalizeAudioFile ${inputFilePath} ${outputFilePath}
done
ffmpeg -i image.jpg -i "ইনপুট.এমপি 3" -কোডেক কপি tmp.avi
mencoder -ovc copy -oac copy tmp.avi-rawaudio -af volnorm = 1 -oac mp3lame -lameopts cbr: প্রিসেট = 192 -স্রেট 48000 -o "আউটপুট.এমপি 3"
rm -f tmp.avi