मैं एक ऑडियो क्लिप के मेटा जानकारी प्राप्त करने के लिए ffmpeg का उपयोग कर रहा हूं। लेकिन मैं इसे कुरेदने में असमर्थ हूं।
$ ffmpeg -i 01-Daemon.mp3 |grep -i Duration
FFmpeg version SVN-r15261, Copyright (c) 2000-2008 Fabrice Bellard, et al.
configuration: --prefix=/usr --bindir=/usr/bin
--datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib
--mandir=/usr/share/man --arch=i386 --extra-cflags=-O2
...
मैंने जाँच की, यह ffmpeg आउटपुट stderr को निर्देशित है।
$ ffmpeg -i 01-Daemon.mp3 2> /dev/null
इसलिए मुझे लगता है कि मिलान रेखाओं को पकड़ने के लिए grep एरर स्ट्रीम पढ़ने में असमर्थ है। हम त्रुटि स्ट्रीम को पढ़ने के लिए grep को कैसे सक्षम कर सकते हैं?
NixCraft लिंक का उपयोग करके , मैंने मानक त्रुटि स्ट्रीम को मानक आउटपुट स्ट्रीम पर पुनर्निर्देशित किया, फिर grep ने काम किया।
$ ffmpeg -i 01-Daemon.mp3 2>&1 | grep -i Duration
Duration: 01:15:12.33, start: 0.000000, bitrate: 64 kb/s
लेकिन क्या होगा अगर हम stderout stderr को पुनर्निर्देशित नहीं करना चाहते हैं?
grep
केवल स्टड पर काम कर सकता है। यह शेल द्वारा बनाया गया पाइप है जो grep के स्टड को दूसरे कमांड के स्टडआउट से जोड़ता है। और शेल केवल एक स्टडआउट को एक स्टड से जोड़ सकता है।
grep
केवल stdout पर काम कर सकते हैं (हालांकि मैं उस स्रोत को वापस करने के लिए विहित स्रोत नहीं ढूँढ सकता), जिसका अर्थ है कि किसी भी स्ट्रीम को पहले stdout में बदलने की आवश्यकता है।