আমি একটি অডিও ক্লিপের মেটা তথ্য পেতে 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
সুতরাং আমি মনে করি যে গ্রেপ ম্যাচিং লাইনগুলি ধরার জন্য ত্রুটি স্ট্রিমটি পড়তে অক্ষম। কীভাবে আমরা গ্রেপকে ত্রুটি প্রবাহটি পড়তে সক্ষম করতে পারি?
নিক্সক্রাফ্ট লিঙ্কটি ব্যবহার করে , আমি আদর্শ ত্রুটি স্ট্রিমটিকে স্ট্যান্ডার্ড আউটপুট প্রবাহে পুনঃনির্দেশিত করেছি, তারপরে গ্রেপ কাজ করেছিল।
$ ffmpeg -i 01-Daemon.mp3 2>&1 | grep -i Duration
Duration: 01:15:12.33, start: 0.000000, bitrate: 64 kb/s
তবে আমরা যদি স্টাডারকে স্টডআউটে পুনর্নির্দেশ করতে না চাই?
grep
কেবল স্টিডিনে কাজ করতে পারে। এটি শেলের দ্বারা তৈরি পাইপ যা গ্রেপ এর স্টিডিনকে অন্য কমান্ডের স্টডআউটের সাথে সংযুক্ত করে। এবং শেলটি একটি স্ট্ডআউটকে কেবল একটি স্টিডিনের সাথে সংযুক্ত করতে পারে।
grep
কেবলমাত্র স্টাডাউটে অপারেট করতে পারে (যদিও আমি এটির ব্যাক আপ করার জন্য ক্যানোনিকাল উত্সটি পাই না), যার অর্থ যে কোনও প্রবাহকে প্রথমে স্টডআউটে রূপান্তরিত করা দরকার।