मेरे पास एक वेब पेज है, जो (अन्य चीजों के साथ) उपयोगकर्ता द्वारा अपलोड किए गए वीडियो से एक विशिष्ट फ्रेम निकालने की आवश्यकता है। उपयोगकर्ता प्लेयर में .mp4 के किसी विशेष भाग की तलाश करता है, फिर एक बटन क्लिक करता है, और एक AJAX कॉल को php स्क्रिप्ट पर निकाल दिया जाता है जो .mp4 लेता है, और वीडियो से सटीक समय लेता है, और निकालने के लिए इसका उपयोग करता है एक "थंबनेल" फ्रेम।किसी वीडियो से एक विशिष्ट फ्रेम निकालने का सबसे तेज़ तरीका (PHP/ffmpeg/anything)
मेरे वर्तमान समाधान php exec
आदेश का उपयोग किया जाता है:
exec("ffmpeg -i $videoPath -ss $timeOffset -vframes 1 $jpgOutputPath");
... जो सिर्फ अच्छा काम करता है, को छोड़कर यह गुड़ के रूप में के रूप में धीमी है। मेरा अनुमान है कि ffmpeg नौकरी के लिए थोड़ा अधिक है, और मैं अंतर्निहित पुस्तकालयों या कुछ का उपयोग करके बेहतर कर सकता हूं ... हालांकि मुझे शून्य विचार है कि यह कैसे करें।
आदर्श रूप से मैं कुछ भी स्थापित नहीं करना चाहता हूं जिसके लिए वास्तविक "स्थापना प्रक्रिया" की आवश्यकता हो ... यानी, मेरे वेब ऐप के साथ फ़ोल्डर में निष्पादन योग्य छोड़ना ठीक है, लेकिन मुझे वास्तव में नहीं होना चाहिए एक इंस्टॉलर चलाओ। इसके अलावा, समाधान मैक, लिनक्स और विंडोज़ पर चलने में सक्षम होना चाहिए (हालांकि लिनक्स शीर्ष प्राथमिकता है)।
इस प्रक्रिया को गति देने के लिए मैं क्या कर सकता हूं?
धन्यवाद।
आप थंबनेल पीढ़ी की नौकरी को कतार में डाल सकते हैं और उपयोगकर्ता को अन्य सामानों के साथ मिलते हैं, जबकि यह किसी अन्य स्क्रिप्ट द्वारा उत्पन्न होता है जिसे उन्हें प्रतीक्षा करने की आवश्यकता नहीं होती है। – GordonM
अच्छी तरह से ffmpeg c के साथ खेलने का प्रयास करें: \ ffmpeg.exe -ic: \ video \ hello.mov - ss 10 - t 4 -f image2 - sameq -vcodec mjpeg img-% 03d.jpg यह बहुत मुश्किल हो सकता है और यह संभव है कि यदि आप कुछ अलग-अलग एट्रिब्यूट्स का उपयोग करते हैं तो आप बड़े प्रदर्शन में सुधार प्राप्त कर सकते हैं ... –
@DusanPlavak ['-sameq' का मतलब" समान गुणवत्ता "नहीं है] (http://superuser.com/a/478550/110524) और ffmpeg से हटा दिया गया है। जेपीजी आउटपुट के लिए '(वर्ग स्केल: v' का उपयोग 2 (उच्चतम गुणवत्ता) की प्रभावी श्रेणी 31 (निम्नतम गुणवत्ता) के साथ करें। – LordNeckbeard