কনসোল থেকে আমি কীভাবে কোনও ভিডিও ফাইলের দৈর্ঘ্য পেতে পারি?


24

মনে করুন আমাদের কাছে কোনও ভিডিও ফাইল রয়েছে_ভাইডিও।

আমি কীভাবে শেল স্ক্রিপ্ট থেকে তার দৈর্ঘ্য পেতে পারি (এমপ্লেয়ার / ট্রান্সকোড / জিস্ট্রিমার / ভিএলসি / এফএফপিইগ / যাই হোক না কেন)?

VIDEO_LENGTH_IN_SECONDS=`ffmpeg .... -i some_video ... | grep -o .....`

উত্তর:



21

এর মতো কিছু:

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

এই প্রদান করা হবে: HH:MM:SS.ms। আপনি এটি ব্যবহার করতে পারেন ffprobeযা বেশিরভাগ FFmpeg ইনস্টলেশন সরবরাহ করা হয়:

ffprobe -show_format input | sed -n '/duration/s/.*=//p'

… বা:

ffprobe -show_format input | grep duration | sed 's/.*=//')

সেকেন্ডে রূপান্তর করতে (এবং মিলিসেকেন্ড ধরে রাখতে), পাইপে এতে:

awk '{ split($1, A, ":"); print 3600*A[1] + 60*A[2] + A[3] }'

এটিকে মিলি সেকেন্ডে রূপান্তর করতে পাইপকে এতে রূপান্তর করুন:

awk '{ split($1, A, ":"); print 3600000*A[1] + 60000*A[2] + 1000*A[3] }'

আপনি যদি মিনি সেকেন্ড ছাড়া মাত্র কয়েক সেকেন্ড চান তবে পাইপটি এতে প্রবেশ করুন:

awk '{ split($1, A, ":"); split(A[3], B, "."); print 3600*A[1] + 60*A[2] + B[1] }'

উদাহরণ:

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


এছাড়াও tcprobe এর জন্য ডিজাইন করা হয় তবে এটি আমার সিস্টেমে ভালভাবে কাজ করে না।
vi।

1
... আমার সম্পাদনা প্রত্যাখ্যান করা হয়েছিল, তাই আমি এখানে পোস্ট করব যে প্রথম ধাপটি আরও সংক্ষিপ্তভাবে সম্পন্ন করা যেতে পারে ffprobe, ঠিক এই ধরণের উদ্দেশ্যে তৈরি করা একটি সরঞ্জাম যা এর সাথে প্যাকেজযুক্ত ffmpeg: ffprobe -show_format input | sed -n '/duration/s/.*=//p'(বা ffprobe -show_format input | grep duration | sed 's/.*=//')। হয়তো @ এসএলএইচকে এই উত্তরে সরাসরি সম্পাদনা করতে পারে।
অশুভ

এই সম্পর্কে দুঃখিত, @evilsoup। হতে পারে আমার একটি দাবি অস্বীকার করা উচিত যে আপনাকে এবং লর্ডনেকবার্ডকে অবাধে আমার পোস্টগুলি সম্পাদনা করার অনুমতি দেওয়া হয়েছে already কয়েকবার ইতিমধ্যে আমার এই সমস্যা হয়েছিল। পরের বার সম্পাদনা বার্তায় বা ঠিক
তেমন

0

যদি আপনার অ্যাক্সেস না থাকে তবে ffprobeআপনি ব্যবহার করতে পারেন mediainfo

# Outputs a decimal number in seconds
mediainfo some_video --Output=JSON | jq '.media.track[0].Duration' | tr -d '"'`

1
এর প্রয়োজনটি দূর করুন jqএবং tr:mediainfo --Output="General;%Duration/String%" input
লগইন করুন

ঝরঝরে! আমি আমার উত্তরটি এখনই অচিহ্নিত করতে যাচ্ছি কারণ আপনার কমান্ডের আউটপুটটি ফর্ম X s YYY msবনাম X.YYY| sed -e 's/ s /./' -e 's/ ms//'আপনি যদি সেই রুটে যেতে চান এবং অ্যাক্সেস না পেয়ে থাকেন তবে এটি সামঞ্জস্য করার পক্ষে যথেষ্ট সহজ jq
টুবিরেপ্লেসড

পরিবর্তে mediainfo --Output="General;%Duration/String3%" inputআউটপুট সঙ্গে এটি পরিবর্তন করা যেতে পারে । 00:01:48.5011 min 48 s
লোগান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.