मुझे my question from yesterday के समाधान का प्रयास करने के लिए ffmpeg से आउटपुट पढ़ने की आवश्यकता है। यह मेरी समस्या से एक अलग मुद्दा है, इसलिए मैंने एक नया प्रश्न बना दिया।कैप्चर एफएफएमपीईजी आउटपुट
PHP में मुझे ffmpeg -i
कमांड से आउटपुट कैसे प्राप्त होता है?
<?PHP
error_reporting(E_ALL);
$src = "/var/videos/video1.wmv";
$command = "/usr/bin/ffmpeg -i " . $src;
echo "<B>",$command,"</B><br/>";
$command = escapeshellcmd($command);
echo "backtick:<br/><pre>";
`$command`;
echo "</pre><br/>system:<br/><pre>";
echo system($command);
echo "</pre><br/>shell_exec:<br/><pre>";
echo shell_exec($command);
echo "</pre><br/>passthru:<br/><pre>";
passthru($command);
echo "</pre><br/>exec:<br/><pre>";
$output = array();
exec($command,$output,$status);
foreach($output AS $o)
{
echo $o , "<br/>";
}
echo "</pre><br/>popen:<br/><pre>";
$handle = popen($command,'r');
echo fread($handle,1048576);
pclose($handle);
echo "</pre><br/>";
?>
यह मेरी उत्पादन होता है:
<B>/usr/bin/ffmpeg -i /var/videos/video1.wmv</B><br/>
backtick:<br/>
<pre></pre><br/>
system:<br/>
<pre></pre><br/>
shell_exec:<br/>
<pre></pre><br/>
passthru:<br/>
<pre></pre><br/>
exec:<br/>
<pre></pre><br/>
popen:<br/>
<pre></pre><br/>
मैं इसे नहीं मिलता
यह मैं क्या कोशिश कर ली जाती है। safe_mode
बंद है। disable_functions
में कुछ भी नहीं है। निर्देशिका स्वामित्वwww-data
(मेरे उबंटू सिस्टम पर अपाचे उपयोगकर्ता) है। मुझे exec()
और system()
से एक वैध स्थिति वापस मिलती है और कमांड लाइन से एक ही कमांड चलाने से मुझे आउटपुट मिल जाता है। मुझे लगता है कि मुझे कुछ स्पष्ट याद आना चाहिए, लेकिन मुझे नहीं पता कि यह क्या है।
आह ... हाँ। यह समझ में आता है क्योंकि मेरी वापसी की स्थिति 1 (0 नहीं) है। मेरी इच्छा है कि काम किया, लेकिन मुझे अभी भी वही परिणाम मिल गया है, बस: "/usr/bin/ffmpeg -i /var/videos/video1.wmv 2> और 1" शुरुआत में। मैं यह देखने के लिए कुछ शोध करूंगा कि क्या उबंटू में stderr को पुनर्निर्देशित करने के लिए कुछ अंतर हैं। –
मैं पुष्टि कर सकता हूं कि निम्नलिखित कार्य करना चाहिए। मैंने एक बार एक शौक परियोजना में इस सटीक रेखा का उपयोग किया है। exec ('ffmpeg -i'। Escapeshellarg ($ filepath)। '2> और 1', $ आउटपुट); – Werner
अहहा! मैं यह समझ गया। मेरी समस्या escapeshellcmd() फ़ंक्शन था। यह "2> और 1" से "2 \> \ & 1" बदल रहा था। मैंने आपके कोड की कोशिश की और यह काम किया। सबक मैंने सीखा है: कमांड * आउटपुट * के बाद * आपने इसमें सभी संशोधन किए हैं = पी। धन्यवाद। –