লিনাক্স / ফ্রিবিএসডি তে এমপি 3 দৈর্ঘ্য পান


27

আমার কাছে বিভিন্ন দৈর্ঘ্যের একগুচ্ছ এমপি 3 ফাইল রয়েছে। আমি এটিকে 50% -60% দৈর্ঘ্যে কেটে দিতে চাই। বলে, 1 মিনিট থেকে 30 সেকেন্ড পর্যন্ত। এটি ffmpeg ব্যবহার করে তুচ্ছ হওয়া উচিত। তবে, ffmpeg ব্যবহারের প্রক্রিয়াজাতকরণের জন্য বেস হিসাবে এর মূল দৈর্ঘ্যটি কীভাবে নির্ধারণ করতে হয় তা আমি জানি না।

কারও ধারণা আছে?

উত্তর:


31

এফএফএমপিগের সাথে দৈর্ঘ্যটি ভেরিয়েবল হিসাবে আপনি স্ক্রিপ্টে ব্যবহার করতে পারবেন তা জানার উপায় নেই। তবে mp3info করে।

mp3info -p "%S" sample.mp3   // total time in seconds

হ্যাঁ, ffmpeg এর দৈর্ঘ্যের তথ্য পাওয়ার কোনও উপায় নেই। আমি ইতিমধ্যে সেখানে বলেছি, দৈর্ঘ্য পাওয়ার পরে আমি ffmpeg ব্যবহার করি। যাইহোক, ইউপি প্রধানদের জন্য ধন্যবাদ।
অরিফবায়ু

4
এটি কেবলমাত্র পূর্ণসংখ্যার হিসাবে দৈর্ঘ্য সরবরাহ করে তা বিবেচনা করে। তাই কিছু ব্যবহারের ক্ষেত্রে যথেষ্ট সঠিক নাও হতে পারে।
রস

গড় বা ভেরিয়েবল বিট্রেট এমপি 3 দিয়ে এমনকি এটি কার্যকর হিসাবে সেরা উত্তর!
ক্রিসওয়েবদেভ

1
\nনতুন লাইন প্রিন্ট করতে যোগ করুন । > mp3info -p "%S\n" sample.mp3 // সেকেন্ডে মোট সময়
nexayq

22

ffmpegআপনি যদি এটিকে অন্য কোনও যুক্তি না দেন তবে ফাইল সম্পর্কে যা কিছু জানা থাকে তা মুদ্রণ করবে। grep"সময়কাল" ব্যতীত সমস্ত কিছু সরিয়ে ফেলার জন্য ব্যবহার করুন :

$ ffmpeg -i foo.mp3 2>&1 | grep Duration
  Duration: 01:02:20.20, start: 0.000000, bitrate: 128 kb/s

আপনি ব্যবহার করতে পারে mplayer। "ID_LENGTH =" রেখার জন্য গ্রেপ:

$ mplayer -ao null -identify -frames 0 foo.mp3 2>&1 | grep ID_LENGTH
ID_LENGTH=3740.00

3
f ffmpeg -i foo.mp3 2> & 1 | awk '/ সময়কাল / {মুদ্রণ সাবস্ট্রাস্ট ($ 2,0, দৈর্ঘ্য ($ 2) -1) just' কেবল সময়ের অংশের জন্য
ক্রেগ টাটারিন

এমপি 3 ফাইলগুলির একটি সেট দৈর্ঘ্যের যোগফলের জন্য TOTLENGTH=0; for f in *.mp3; do LENGTH=$(mplayer -ao null -identify -frames 0 "$f" 2>&1 | awk -F= '/ID_LENGTH/ {print $2}' | awk -F. '{print $1}'); TOTLENGTH=$(($TOTLENGTH + $LENGTH)); done; echo $TOTLENGTH, আপনি সেকেন্ডে সমস্ত ফাইলে অডিওর মোট দৈর্ঘ্য প্রিন্ট করার মতো কিছু ব্যবহার করতে পারেন । এটি সম্ভবত আরও দক্ষতার সাথে করা যেতে পারে, তবে যেহেতু আমি এটি ওয়ান-অফ হিসাবে লিখেছি, এটি আমার প্রয়োজনের জন্য যথেষ্ট ভাল ছিল। (দ্বিতীয় বারান্দার অনুরোধ দশমিক দশকে ছাড়িয়ে যায়, ফলে ফলাফলটি 100% সঠিক নয়, তবে আমার প্রয়োজনের জন্য যথেষ্ট ভাল))
সিভিএন

Ffmpeg এর-প্রস্তুতকরণ পতাকা থেকে সাবধান থাকুন। মূলত, সিপিইউ সংরক্ষণের জন্য এটির যে সংখ্যাগুলি প্রতিবেদন করা হয় তা একটি নির্দিষ্ট পয়েন্টের পরে অনুমান করা হয়।
mlissner

একটি গড় বিট্রেট এমপি 3 ব্যবহার করে, ffmpeg এই সতর্কতা সহ একটি ভুল সময়কাল রিপোর্ট করে Estimating duration from bitrate, this may be inaccurate। আমি মনে করি এই উত্তরটি কেবল কনস্ট্যান্ট বিট্রেট এমপি 3 সহ বৈধ ।
ক্রিসওয়েবদেভ

9

মজার বিষয় হল এক্সআইএফটিউল অ্যাপ্লিকেশনটি শেষ লাইনের হিসাবে এমপি 3 সময়কাল দেয়!

$ exiftool somefile.mp3
এক্সিফটুল সংস্করণ নম্বর: 7.98
ফাইলের নাম: somefile.mp3
ডিরেক্টরি:।
ফাইলের আকার: 49 এমবি
ফাইল পরিবর্তনের তারিখ / সময়: 2009: 09: 10 11: 04: 54 + 05: 30
ফাইলের ধরণ: এমপি 3
মাইম টাইপ: অডিও / এমপিইগ
এমপিইজি অডিও সংস্করণ: 2.5
অডিও স্তর: 3
অডিও বিট্রেট: 64000
নমুনা হার: 8000
চ্যানেল মোড: একক চ্যানেল
এমএস স্টেরিও: বন্ধ
তীব্রতা স্টেরিও: বন্ধ
কপিরাইট পতাকা: মিথ্যা
আসল মিডিয়া: সত্য
জোর: কোনোটাই নয়
আইডি 3 আকার: 26
ধরণ: ব্লুজ
সময়কাল: 1:47:46 (প্রায়)

3

কেবলমাত্র ব্যবহার করে সময়কাল পাওয়ার আরও একটি উপায় ffmpegএবং grep:

# ffmpeg -i rara.mp3 2>&1 |grep -oP "[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{2}"
00:03:49.12

2

সমাধানগুলি ffmpegআমাকে সামান্য ভঙ্গুর হিসাবে আঘাত করে , যেহেতু তারা আউটপুট পার্সিং করে যা ইন্টারফেস হিসাবে বেশ নকশাকৃত নয়। এটি বলেছিল তারা সম্ভবত বেশ কয়েক বছর ধরে কাজ চালিয়ে যাবে নির্বিশেষে।

ffmpegffprobeঅডিও ফাইলগুলি (এমপি 3 সহ প্রচুর ফর্ম্যাট) সম্পর্কিত তথ্য পাওয়ার জন্য একটি সরঞ্জাম নিয়ে আসে এবং মেশিনটি পঠনযোগ্য আউটপুট তৈরি করতে পারে। নিম্নলিখিত কমান্ডটি গানের সময়কাল পায়।

ffprobe -show_streams -print_format json song.mp3 -v fatal | jq '.streams[0].duration'

2
আপনি ঠিক করতে পারেনffprobe -show_entries stream=duration -of compact=p=0:nk=1 -v fatal song.mp3
জ্ঞান

1

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

mplayer -identify -ao null -vo null -frames 0 Filename.mp3 | grep ^ID_LENGTH= | cut -d = -f 2

1

আপনি ফাইলের সময়কাল পেতে ffmpeg ব্যবহার করতে পারেন। শুধু ব্যবহার করুন:

ffmpeg -i <infile> 2>&1 | grep "Duration" | cut -d ' ' -f 4 | sed s/,//

0

আমি একই সমস্যা পেয়েছি এবং এমপ্লেয়ার কমান্ডটি খুঁজে পেয়েছি (সোনারপসুডো) ভাল কাজ করেছে, তবে আমি পরে আবিষ্কার করেছি যে আপনি যদি রিদমবক্সে একটি অ্যালবাম খোলেন আপনি দেখতে পাবেন এর স্ট্যাটাস লাইনটি ট্র্যাকের সংখ্যা, মোট খেলার সময় এবং ডিস্ক আকার দেয়।


-1

উপরে রেফারিং ব্যবহার করে এখানে আমার সহজ।

mp3_full_path="$HOME/i/want/the/length/of/file.mp3"
ffmpeg -i "$mp3_full_path" 2>&1 | grep Duration | awk -F ' ' '{print $2}' | awk -F '[,|.]' '{print $1}'
10:47:15

আমি সেই মানটি পরিবর্তনশীল এমপি_ফুল_লেন্থে প্রেরণ করি

mp3_full_path="$HOME/i/want/the/length/of/file.mp3"
read -r mp3_full_length <<< `ffmpeg -i "$mp3_full_path" 2>&1 | grep Duration | awk -F ' ' '{print $2}' | awk -F '[,|.]' '{print $1}'`



# I can use this variable for my own purpose!
echo $mp3_full_length 
10:47:15

আপনাকে উপরে মানুষকে ধন্যবাদ! আমি আপনার ধারণা এবং জ্ঞান ব্যবহার করি পড়ার জন্য আপনাকে ধন্যবাদ, একটি সুন্দর দিন দিন! ;)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.