कैसे वीडियो (mp4) खोल का उपयोग कर रहा है की जाँच करने के लिए कैसे?


16

मुझे शेल के उपयोग से लंबाई> 4 मिनट के साथ निर्देशिका में सभी mp4 फ़ाइलों को अपलोड करने की आवश्यकता है। मुझे यह देखने के लिए कोई स्क्रिप्ट नहीं मिल रही है कि वीडियो कितनी लंबी है। क्या किसी को कोई विचार है कि कैसे करना है?

आपका बहुत बहुत धन्यवाद!


1
इसे देखें stackoverflow.com/questions/3844430/… :-) आशा है कि यह मदद करता है
harish.venkat

जवाबों:


23

यह आपको वीडियो की लंबाई देगा।

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

दूरस्थ वीडियो urls जैसे ffmpeg -i " instagram.fewr1-1.fna.fbcdn.net/t50.2886-16/… " 2> & 1 के लिए भी काम करता है । grep अवधि | cut -d '' -f 4 | sed s /, //
skidadon

FFmpeg लॉग संदेश प्रारूप की गारंटी है? यदि नहीं, तो मुझे यह पसंद नहीं है - यह किसी भी रिलीज के साथ काम करना बंद कर सकता है।
ओन्ड्रा kaइक्का

7

Mediainfo इस उद्देश्य के लिए एक तेज़ उपकरण है:

$ mediainfo --Inform="Video;%Duration%"  [inputfile]

आप अधिक गहन उत्तर में अधिक विकल्प पा सकते हैं ।

मेरे परीक्षणों में, ffprobe0.3 सेकंड mediainfoलगते हैं और 0.09 सेकंड लगते हैं।


यह अजीब परिणाम देता है ... जैसे 2679600 ... उपयोग करने के लिए बेहतर mediainfo --Inform="Video;%Duration/String%" [inputfile]... जो आपको कुछ मिलेगा 43 मिनट 50 के दशक
रॉबर्ट रिडेल

5

आप avconv कमांड का उपयोग करने का प्रयास कर सकते हैं ।

सबसे पहले आपको स्थापित करना चाहिए:

सॉफ्टवेयर सेंटर के माध्यम से स्थापित करें

यदि आप फ़्लैग -आई के साथ कमांड टाइप करते हैं, तो आपको वीडियो के बारे में जानकारी मिलेगी:

avconv -i test.mp4

आउटपुट में एक क्षेत्र है जिसे अवधि कहा जाता है

avconv version 0.8.4-4:0.8.4-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers
  built on Nov  6 2012 16:51:33 with gcc 4.6.3
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':

  Duration: 00:58:28.05, start: 0.000000, bitrate: 888 kb/s
    Stream #0.0(eng): Video: h264 (High), yuv420p, 720x404, 748 kb/s, 25 fps, 25 tbr, 20k tbn, 50 tbc
    Stream #0.1(und): Audio: aac, 48000 Hz, stereo, s16, 127 kb/s

अब आप केवल क्षेत्र अवधि का मान प्राप्त करने के लिए कमांड का उपयोग कर सकते हैं

प्रकार:

avconv -i file.mp4 2>&1 | grep 'Duration' | awk '{print $2}' | sed s/,//

मेरे मामले में परिणाम है:

00:58:28.05

58 मिनट और 28.05 सेकंड।

आशा है कि यह उपयोगी होगा!


1
इस के साथ भी इस्तेमाल किया जा सकता है avprobe- के लिए कोई ज़रूरत नहीं है -i, लेकिन यह अन्यथा उसी तरह काम करता है। या ffprobe@ प्रति उत्तर के लिए।
evilsoup

4

exiftool(मूल रूप से छवि फ़ाइलों से कैमरा मेटाडेटा पढ़ने के लिए इरादा है, लेकिन बाद में लगभग किसी भी तरह की मीडिया फ़ाइल से मेटाडेटा पढ़ने और लिखने के लिए विस्तारित किया गया ) इसके लिए उपयोग करना बहुत सुविधाजनक है। इसे चलाएं:

exiftool FILE.mp4 | grep Duration

आपको शायद exiftoolपहले स्थापित करने की आवश्यकता होगी , लेकिन यह आसानी से निम्नलिखित कमांड (डेबियन और डेरिवेटिव जैसे उबंटू आदि) के साथ किया जाता है:

apt install libimage-exiftool-perl

बेशक, यह जवाब सिर्फ एक और विकल्प है। कई अन्य उत्तर भी अच्छे हैं। :)



1

सॉल्यूशन सॉल्यूशन में जोड़कर , इसका इस्तेमाल पूरी डायरेक्टरी में किया जा सकता है:

for f in *; do ffmpeg -i "$f" 2>&1 | grep Duration | cut -d " " -f 4 | sed s/,//  | tr -d "\n" && echo " $f"; done

यह भी | sortउनकी लंबाई के आधार पर छँटाई की गई फ़ाइलों के द्वारा बढ़ाया जा सकता है ।

आप इसे किसी निर्देशिका में करने में सक्षम होने के लिए .bashrcया इसमें जोड़ सकते हैं.bash_aliaseslsvlength | sort

alias lsvlength='for f in *; do ffmpeg -i "$f" 2>&1 | grep Duration | cut -d " " -f 4 | sed s/,//  | tr -d "\n" && echo " $f"; done'

1

ffprobeअधिक सुंदर समाधान है, ffmpegजिससे आउटपुट पथ न दिए जाने पर त्रुटि होती है।

ffprobe video.mp4 2>&1 | grep -E '^ +Duration' | cut -d':' -f2- | cut -d, -f1

0

यदि आप किसी निर्देशिका में कुछ वीडियो की अवधि देखना चाहते हैं, तो आप निम्न आदेश का उपयोग कर सकते हैं

exiftool * | grep ^ अवधि | cut -d '' -f 26


1
उपयोग करने की आवश्यकता नहीं है grepऔर ऐसे। बस exiftool -T -Duration *.mkv(या जो भी फ़ाइल पैटर्न)
PerlDuck

0

जैसा कि आप देख सकते हैं कि इसे पूरा करने के कई तरीके हैं। ffprobe mediafile -show_entries format=format=duration 2>&1 | grep DURATIONजहां Mediafile फ़ाइल का नाम है, नीचे के समान आउटपुट प्रदान करेगा। पहला पहला स्ट्रीम की अवधि (आमतौर पर वीडियो) और दूसरा दूसरी स्ट्रीम (आमतौर पर ऑडियो) की अवधि प्रदान करता है।

  DURATION        : 00:21:40.132000000
  DURATION        : 00:21:40.062000000
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.