2009-05-06 7 views
10

मैं एक PHP स्क्रिप्ट लिख रहा हूं जो अपलोड की गई वीडियो फ़ाइलों को फ्लाई पर FLV में परिवर्तित करता है, लेकिन मैं केवल स्क्रिप्ट के उस भाग को चलाने के लिए चाहता हूं यदि उपयोगकर्ता के पास सर्वर पर FFmpeg स्थापित है।FFmpeg स्थापना और संस्करण का पता लगाएं

क्या इससे पहले समय का पता लगाने का कोई तरीका होगा? क्या मैं शायद एक एफएफएमपीईजी कमांड चला सकता हूं और परीक्षण कर सकता हूं कि यह वापस आता है "कमांड नहीं मिला?"

उत्तर

3

आपने अपने स्वयं के प्रश्न का उत्तर दिया है, तो आप आदेश चला सकते हैं और यदि यह नकारात्मक हो जाता है तो आप जानते हैं कि यह इंस्टॉल नहीं है, या आप संभावित ffmpeg बाइनरी के लिए सेट किए गए डिफ़ॉल्ट पथ की जांच कर सकते हैं।

+0

धन्यवाद। क्या आप दिखा सकते हैं कि मैं PHP में exec() कमांड की वापसी का मूल्यांकन कैसे कर सकता हूं? क्या PHP काम करने के लिए पर्याप्त स्मार्ट है अगर आदेश काम नहीं करता है? वह मुझे आश्चर्यचकित करेगा। – Aaron

+3

नमूना: यदि (स्ट्रॉप्स ('ffmpeg --help', 'ffmpeg')> -1) echo 'इंस्टॉल किया गया!'; –

+0

@ सीडी-एमएन: जब तक कि ** के समान संदेश को आउटपुट करने के लिए चालू नहीं किया जाता है, तो पैकेज ffmpeg स्थापित नहीं है, आप इसे चलाकर इंस्टॉल कर सकते हैं ... **। साथ ही, 'स्ट्रॉप्स' जावास्क्रिप्ट समकक्ष के रूप में काम नहीं करता है, आपको इसे '! == false' के विरुद्ध परीक्षण करना होगा। –

0

आप इस एक कोशिश दे सकता है:

function commandExists($command) { 
    $command = escapeshellarg($command); 
    $exists = exec("man ".$command,$out); 
    return sizeof($out); 
} 

if (commandExists("ffmpeg")>0) { 
    // FFMPeg Exists on server 
} else { 
    // No FFMPeg 
} 

अन्य कार्यों के लिए पुन: प्रयोज्य के साथ-साथ - सुरक्षा चिंताओं के कुछ नहीं।

+1

यह आदेश की जांच करने का एक बहुत बुरा तरीका है। स्थापित मैन पेज का मतलब यह नहीं है कि प्रोग्राम स्थापित है - और इसके विपरीत। निष्पादन योग्य के लिए जांचना पर्याप्त है। – viraptor

+1

पर्याप्त मेला, यह पहला विचार था जो उस दिमाग में आया और उस सर्वर पर काम किया जिस पर मैंने इसका परीक्षण किया था, सोचा था कि मैं देखता हूं कि यह ओपी के लिए भी काम करता है या नहीं। – StudioKraft

6

exec() फ़ंक्शन का तीसरा पैरामीटर निष्पादित प्रोग्राम का वापसी मान है। इसे इस तरह प्रयोग करें:

exec($cmd, $output, $returnvalue); 
if ($returnvalue == 127) { 
    # not available 
} 
else { 
    #available 
} 

यह मेरे उबंटू बॉक्स पर काम करता है।

9

प्रयास करें:

$ffmpeg = trim(shell_exec('which ffmpeg')); // or better yet: 
$ffmpeg = trim(shell_exec('type -P ffmpeg')); 

अगर यह वापस आता है खाली ffmpeg उपलब्ध नहीं है, अन्यथा यह निष्पादन योग्य है, जो आपको वास्तविक ffmpeg कॉल में उपयोग कर सकते हैं का निरपेक्ष पथ का आयोजन करेगा:

if (empty($ffmpeg)) 
{ 
    die('ffmpeg not available'); 
} 

shell_exec($ffmpeg . ' -i ...'); 
0

हाय मैं इस मुद्दे की खोज करता हूं और मैं इस कोड द्वारा ffmpeg का संस्करण प्राप्त कर सकता हूं: गूंज (shell_exec ('/ usr/bin/ffmpeg -version'));