मैं ffmpeg के आउटपुट को ffplay में कैसे पाइप कर सकता हूं?


22

मैं ffmpeg के आउटपुट को ffplay में कैसे पाइप कर सकता हूं?

फिलहाल मैं बैश में वर्कअराउंड का उपयोग करता हूं:

mkfifo spam
(ffplay spam 2> /dev/null &) ; capture /dev/stdout | ffmpeg -i - spam

जवाबों:


18

मुझे नहीं पता कि क्या यह ऐसा है ffmpegजो अपने डेटा को स्टैडआउट में आउटपुट नहीं कर सकता है, या ffplayजो स्टड से इसके इनपुट को नहीं ले सकता है।

यदि ऐसा है ffmpegकि अपने डेटा को stdout में आउटपुट नहीं कर सकता है:

capture /dev/stdout | ffmpeg -i - >(ffplay 2> /dev/null)

(आपको माइग्रेन को एक -तर्क जोड़ने की आवश्यकता है ffplayताकि स्टड से इसका इनपुट लिया जा सके।)

यदि ऐसा है ffplayकि स्टड से इसका इनपुट नहीं लिया जा सकता है:

ffplay <(capture /dev/stdout | ffmpeg -i -) 2> /dev/null

निर्माण <(command)और >(command)निर्माण के बारे में अधिक जानकारी के लिए, बैश मैनुअल की प्रक्रिया प्रतिस्थापन अनुभाग देखें ।


4
मेरे लिए यह "-f" के साथ आउटपुट प्रारूप को स्पष्ट रूप से निर्दिष्ट किए बिना काम नहीं करता। जैसा कि ffmpeg.org/ffmpeg.html पर निर्दिष्ट किया गया है : "प्रारूप आम तौर पर इनपुट फ़ाइलों के लिए ऑटो का पता लगाया जाता है और आउटपुट फ़ाइलों के लिए फ़ाइल एक्सटेंशन से अनुमान लगाया जाता है"। दिए गए उत्तर में ffmpeg अभ्यस्त आउटपुट स्वरूप का अनुमान लगाने में सक्षम है। इसलिए मुझे लगता है कि ffmpeg में "-f fmt" होना चाहिए।
पावेल के।

1
ffmpeg 2.8.6 अन्य उत्तर में बताए अनुसार स्टड इनपुट का समर्थन करता है। आप उस समर्थन के लिए जाँच कर सकते हैं: stackoverflow.com/questions/12999674/…
Ciro Santilli 中心 support support support '17

17
ffmpeg -i input.avi <options> -f matroska - | ffplay -

काम करेगा; आपको आउटपुट के लिए एक कंटेनर प्रारूप सेट करना होगा। यह सामान्य रूप से ffmpeg के साथ सेट किया जाता है जिसे आप एक्सटेंशन देते हैं जो आउटपुट देते हैं, लेकिन यहां आपको इसे मैन्युअल रूप से सेट करना होगा -f। मैं matroska (MKV) की सलाह देता हूं क्योंकि इसमें लगभग कोई भी वीडियो हो सकता है, इसलिए जो भी आप इसे ट्रांसकोड कर रहे हैं उसे पूरी तरह से अच्छी तरह से काम करना चाहिए।

ध्यान दें कि यदि आप Ubuntu 12.04 का उपयोग कर रहे हैं, तो ffmpeg को libav fork द्वारा बदल दिया गया है, और आपको इसका उपयोग करना चाहिए avconvऔर avplayइसके बजाय; वाक्यविन्यास अन्यथा समान है। वहाँ एक ffmpeg की तरह है, लेकिन यह डिजाइन द्वारा अपंग है।


Win10: pipe:: Invalid data found when processing inputKपॉवर शेल में त्रुटि होती है , लेकिन कमांड प्रॉम्प्ट में अच्छी तरह से काम करता है
जॉन

11

ffmpeg पाइपिंग ऑपरेशन का समर्थन करता है। दस्तावेज़ीकरण के उस भाग को यहाँ देखें

मुझे नहीं पता कि ffplay कैसे काम करता है, लेकिन मानक आउटपुट के लिए ffmpeg के आउटपुट को पाइप करने के लिए, आप पाइप कमांड को ffmpeg कमांड के अंत में जोड़ सकते हैं। उदाहरण:

ffmpeg -i input.flv pipe:1 | ffplay -i -

1
धन्यवाद, मैं किसी भी तरह से आदमी पृष्ठों के उस भाग को याद किया .. लेकिन मैं काम करने के लिए इस निर्माण नहीं मिल सका, उत्पादन फ़ाइल नाम ffmpeg और इनपुट पाइप ffplay args में से हटा दिया जाना चाहिए। मैं उसके अनुसार अपनी पोस्ट को संपादित होगा ..
विम

धन्यवाद। जैसा कि मैंने कहा, मैंने पहले कभी भी ffplay का उपयोग नहीं किया है, लेकिन मुझे पता है कि ffmpeg।
Matzahboy

मेरे में man ffplay, मैं स्विच का ffplayसमर्थन नहीं देख -iसकता - क्या यह ffmpegकेवल है?
सादाऊ

1
pipe:1बनाम -? -एफएफएमईजी 2.8.6 पर काम करता है।
सीरो शांतिली 新疆 改造 iro 六四 事件 '

9

सामान्य पाइप काम की तरह दिखता है (कम से कम खिड़कियों में):

ffmpeg -i sintel.mpg -pix_fmt yuv420p -f rawvideo - | ffplay -f rawvideo -pix_fmt yuv420p -s 720x480 -

अधिक जटिल इनपुट / आउटपुट के साथ इसे आजमाया नहीं गया है ...

ffmpeg -f dshow -i video=screen-capture-recorder -pix_fmt yuv420p -f mpegts - | ffplay -analyzeduration 10 -f mpegts -

थोड़ा तेज स्टार्टअप है


5
मुझे मिल रहा था Unable to find a suitable output format for 'pipe:'- मुझे एक कोडेक निर्दिष्ट करने की आवश्यकता थी -f
०३६__

काम करता है, लेकिन बहुत कम छवि गुणवत्ता
जॉन

यदि यह कम छवि गुणवत्ता वाला है तो सुनिश्चित करें कि आप शुरू में जो कैप्चर कर रहे हैं वह उच्च छवि गुणवत्ता है (इसे पहले फ़ाइल में सहेजें, आदि) यह "" सामान्य गुणवत्ता होनी चाहिए ...
रुगरडपैक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.