मैं समय के आधार पर अलग-अलग स्थानों में वीडियो क्रॉप करने के लिए FFMPEG के filter_complex_script विकल्प का उपयोग करने का प्रयास कर रहा हूं। मेरे पास एक फाइल है जो एक वस्तु के बाउंडिंग बॉक्स को दिखाती है कि एक ऑब्जेक्ट होना चाहिए और "myscript.txt" नामक एक टेक्स्ट फाइल लिखी है जिसमें निम्नानुसार कमांड हैं:
crop=x=125:y=190:w=105:h=98
crop=x=124:y=193:w=106:h=99
crop=x=124:y=194:w=106:h=99
Ffmpeg के लिए मेरी कमांड लाइन कॉल है
ffmpeg -y -i input.mp4 -filter_complex_script "myscript.txt" -c:v libx264 output.mp4
यह ठीक चलेगा और एक आउटपुट का उत्पादन करेगा, लेकिन फसल विंडो केवल फ़ाइल की पहली पंक्ति का उपयोग करती है और समय के साथ नहीं बदलती है। वर्तमान में मेरे पास फ्रेम स्तर पर विवरण हैं, लेकिन अगर वहाँ कोई समाधान है, तो मैं इस काम को दूसरे तरीके से करने का तरीका ढूंढ सकता हूं।
मैं विंडोज़ 10 पर FFMPEG संस्करण 3.4.1 चला रहा हूं।
धन्यवाद!
1
ffmpeg एन्कोडर को अलग-अलग आकार के फ्रेम भेजने का समर्थन नहीं करता है, इसलिए भले ही आपको फसल काम कर रही हो, आउटपुट को ऑटो-स्केलिंग के कारण एक निश्चित फ्रेम आकार होगा। आपकी सबसे अच्छी शर्त एक स्क्रिप्ट / बैचफाइल को चलाना है, जो फ़िल्टर लाइन को पढ़ता है और इसे कमांड में सम्मिलित करता है, एक फ्रेम प्रति। काम करने के लिए फ्रेम का चयन करने के लिए आपको पहले से एक चुनिंदा फ़िल्टर डालना होगा।
—
ज्ञान
दिलचस्प है ... तो क्या होगा अगर मैंने प्रत्येक फ्रेम के लिए एक विशिष्ट आकार के आउटपुट को निर्दिष्ट किया (जो मैं आउटपुट के रूप में पूरी तरह से खुश हूं)। क्या यह स्क्रिप्ट पर चलने के लिए बनाया जा सकता है बिना बैचफ़िले चलाने के लिए? मैं अजगर में इसे चलाने की कोशिश कर रहा हूं; क्या इस कमांड में क्रॉप्ड क्षेत्रों के डेटाफ्रेम को एकीकृत करने का कोई तरीका है?
—
D_Corson