Mplayer के कमांड लाइन आउटपुट की अंतिम पंक्ति को पढ़ें और स्टोर करें


0

मैं mplayer में खेले गए वीडियो की लंबाई (सेकंड में समय) का आउटपुट प्राप्त करने के लिए एक कार्यक्रम लिख रहा हूं। आमतौर पर mplayer का आउटपुट होता है

Playing video.mp4.
Detected file format: QuickTime / MOV (libavformat)
[lavf] stream 0: video (h264), -vid 0
Clip info:
 major_brand: dash
 minor_version: 0
 compatible_brands: iso6avc1mp41
 creation_time: 2017-11-03 00:36:26
Load subtitles in .
Selected video codec: H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 [libavcodec]
Starting playback...
VIDEO:  1920x1080  23.976 fps  1343.8 kbps (168.0 kB/s)
VO: [x11] 1920x1080 => 1920x1080 Planar YV12
[swscaler @ 0xb5cea980]No accelerated colorspace conversion found from yuv420p to bgra.
[swscaler @ 0xb5cea980]using unscaled yuv420p -> bgra special converter
Colorspace details not fully supported by selected vo.
V:  78.0   0/  0  8% 117%  0.0% 0 0

मैं अंतिम पंक्ति का समय आउटपुट चाहता हूं। अर्थात78.0

मैं इस कमांड का उपयोग करके किसी फ़ाइल में लॉग को सहेज रहा हूं:

mplayer video.mp4 2>timing.log | grep V:

जिसे उसी वीडियो को चलाने वाले थ्रेड फ़ंक्शन के समानांतर चलने वाले पायथन फ़ंक्शन द्वारा पढ़ा जाएगा।

क्या कोई रास्ता है जहां मैं केवल समय को स्टोर कर सकता हूं।

चूंकि मैं लॉग फ़ाइल से टाइमिंग प्राप्त करने में असमर्थ हूं, क्योंकि यह मुझे अशक्त कर देता है।

जवाबों:


0

आप केवल mplayer के stderr आउटपुट (2> टाइमिंग।लॉग) को रीडायरेक्ट कर रहे हैं। 'V:' मान जो आप में अंकित हैं, वे stdout में हैं (1> time.log)।

वैसे भी मैं एक कप चाय का उपयोग करता हूँ IMHO:

mplayer video.mp4 | टी-ए टाइमिंग।लॉग; grep 'V:' टाइमिंग .log


यह अंतिम पंक्ति के अलावा सभी डेटा को प्रिंट करता है।
ron123456

हालांकि 'स्ट्रेस' का इस्तेमाल करने में मैं सक्षम था। लेकिन इसने मेरी रास्पबेरी पाई को धीमा कर दिया। strace mplayer video.mp4 2>&1 | grep V: | awk 'FNR=1 {print $3}' > timing.log
ron123456
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.