2009-04-16 4 views
5

में उपप्रक्रिया के रूप में ffmpeg नहीं चला सकते हैं मैं उपप्रक्रिया के रूप में ffmpeg उपयोगिता चलाकर वीडियो संकल्प को निर्धारित करने और इसके उत्पादन हासिल करने और यह पार्स करने के लिए कोड का पालन कोशिश कर रहा हूँ:रूबी

IO.popen 'ffmpeg -i ' + path_to_file do |ffmpegIO| 
    # my parse goes here 
end 

... लेकिन ffmpeg उत्पादन अब भी है stdout और ffmepgIO.readlines से जुड़ा हुआ खाली है। क्या ffmpeg उपयोगिता के लिए कुछ विशेष उपचार की आवश्यकता है? या ffmpeg आउटपुट प्राप्त करने के लिए कोई अन्य तरीका है? मैंने WinXP और फेडोरा लिनक्स के तहत इस कोड का परीक्षण किया - परिणाम समान हैं।

उत्तर

7

अनुवर्ती mouviciel की टिप्पणी पर करने के लिए, आप popen3 की तरह कुछ का उपयोग करने की आवश्यकता होगी:

require 'open3' 

Open3.popen3("ffmpeg", "-i", path_to_file) { |stdin, stdout, stderr| 
    # do stuff 
} 

(Btw, ध्यान दें कि पैरामीटर के रूप में एक सरणी का उपयोग कर popen के लिए थोड़ा सुरक्षित होगा, विशेष रूप से यदि फ़ाइल नाम में रिक्त स्थान या किसी भी प्रकार का चरित्र शामिल हो सकता है जिसे अन्यथा उद्धृत करने की आवश्यकता होगी)

3

एफएफएमपीजी स्टडआउट मीडिया आउटपुट के लिए है। लॉगिंग जानकारी (जैसे रिज़ॉल्यूशन) के लिए आपको ffmpeg stderr का विश्लेषण करना होगा।

0

आप जो करने की कोशिश कर रहे हैं उसके आधार पर rvideo gem का उपयोग करना आसान हो सकता है।

उदाहरण के लिए:

video = RVideo::Inspector.new(:file => path_to_file) 
video.resolution # => "480x272" 
video.width # => 480 
video.height # => 272 
+0

मैं पहले से ही आरवीडियो मणि becaus में निराश हूँ ई यह ffmpeg के साथ काम नहीं करता है। मैं इस मणि के स्रोत कोड का निरीक्षण करता हूं और यह स्थापित करता हूं कि यह ffpeg को चलाने की कोशिश करें जैसा कि मैंने वर्णन किया है और इसलिए विफल रहता है। – Eskat0n