गैर-अनुक्रमिक छवि फ़ाइलों में शामिल होने के लिए FFMPEG कैसे प्राप्त करें? (3 एस द्वारा छोड़ें)


27

मेरे पास छवियों का एक गुच्छा है, जो इस पैटर्न का पालन करते हैं।

0001.png
0004.png
0007.png
0010.png
0013.png
0016.png
0019.png
...

वे सही क्रम में हैं, लेकिन पहली फ़ाइल के बाद FFMPEG कुछ भी अनदेखा करता है, क्योंकि यह नहीं मिल सकता है 0002.png। मैं इन फ़ाइलों में शामिल होने के लिए इसे कैसे प्राप्त कर सकता हूं?

मैंने कोशिश की

ffmpeg -i %04d.png out.avi

2
कैसे अस्थायी रूप से उनका नाम बदलकर, एवीआई बनाकर और फिर उनका नाम बदलकर (3x-2) .png स्कीम कर दिया गया? बल्क का नाम बदलें यूटिलिटी @ बल्कनेरेम्यूटिलिटी .uk/Main_Intro.php एक नि: शुल्क, उम, बल्क रेनमर है।
ज्ञान

जवाबों:


18

0.11.1 ffmpeg के साथ यह इतना आसान है:

ffmpeg -f image2 -i %*.png out.avi

से manपेज, के तहत "वीडियो और ऑडियो फ़ाइल प्रारूप रूपांतरण" एक उदाहरण में:

छवि अनुक्रम आयात करते समय, -iआंतरिक रूप से शेल-जैसे वाइल्डकार्ड पैटर्न (ग्लोबिंग) का विस्तार करने का भी समर्थन करता है। अपने वास्तविक फ़ाइल नामों और शेल के ग्लोब विस्तार के साथ हस्तक्षेप करने की संभावना को कम करने के लिए, आपको ग्लोब मेटा पात्रों को एक ही %चरित्र के साथ उपसर्ग द्वारा सक्रिय करना आवश्यक है , जैसे कि foo-%*.jpeg, foo-%?%?%?.jpegया foo-00%[234%]%*.jpeg

प्रति टिप्पणी अपडेट करें: हाल के संस्करणों पर आपको अब -i '*.png'सिंटैक्स का उपयोग करना चाहिए ।


3
यह मेरे लिए काम नहीं कर रहा है Ubuntu 13.04 में ffmpeg या avconv का उपयोग करके
नरक

2
यह किसी भी अधिक विकल्प नहीं प्रतीत होता है।
टिम्मम्म

2
glob_sequenceपैटर्न प्रकार का बहिष्कार कर रहा है, लेकिन globपैटर्न प्रकार नहीं है। मुल्व्या और पीटर कॉर्डेस का जवाब काम करता है।
डॉ। 22

1
Pattern type 'glob_sequence' is deprecated: use pattern_type 'glob' instead
सर्ज स्ट्रोबोबंड

1
स्पष्टीकरण के रूप में, चूंकि यह पृष्ठ वर्तमान में उस चेतावनी संदेश के लिए Google में शीर्ष परिणाम है ( Pattern type 'glob_sequence' is deprecated...): ऊपर दिए गए rymo द्वारा दिया गया आदेश (विशेष रूप से -i %*.png) चेतावनी का कारण होगा । इसे खत्म करने के लिए, पीटर कॉर्डेस उत्तर ( -i '*.png') में थोड़ा-अलग वाक्यविन्यास का उपयोग करें ।
जेम्स

19

मेरी टिप्पणी में वर्कअराउंड के अलावा, आप ffmpeg प्रलेखन से इस वाक्यविन्यास का उपयोग करने में सक्षम होना चाहिए :

ffmpeg -f image2 -pattern_type glob -i '*.png' out.avi

उद्धरण महत्वपूर्ण हैं, आपको देखने के लिए ffmpeg की आवश्यकता है *, न कि शेल ने इसे विस्तारित किया है।


मेरे लिए काम नहीं करता है, लेकिन यह शायद इसलिए है क्योंकि मेरे पास एक पुरानी बिल्ड है। मैं इसे स्वीकार कर रहा हूं क्योंकि यह भविष्य के उपयोगकर्ताओं की मदद करने की सबसे अधिक संभावना है।
Brigand

Ffmpeg प्रलेखन के अनुसार आपको ग्लोब पैटर्न प्रकार के साथ% 04d.png के बजाय '* .png' का उपयोग करना चाहिए।
फ्रेंड ऑफ जॉर्ज

इसके बाद 00xx.png के अलावा, फ़ोल्डर में मौजूद सभी pngs का चयन करेंगे, जबकि ओपी निरंतरता की चिंता किए बिना केवल 04d pngs को कतार में रखना चाहता है।
ज्ञान

2
मुझे पूरा यकीन है कि आपको यूनिक्स-शैली के गोले (इसलिए, OSX और लिनक्स आदि) द्वारा विस्तारित होने से बचने के लिए *.pngएकल-उद्धरण (इसलिए '*.png') में डालने की आवश्यकता है ।
evilsoup

1
अफसोस की बात है कि ffmpeg डेवलपर्स फाइल ग्लोबिंग सपोर्ट को एक विकल्प बनाते हैं ! मानक विंडो बनाता है इसमें शामिल नहीं है।
तैम्मल

9

से http://www.ffmpeg.org/faq.html : आप नाम बदलना चित्रों की एक बड़ी संख्या है, तो आप निम्न आदेश बोझ को कम करने के लिए उपयोग कर सकते हैं। कमांड, बॉर्न शेल सिंटैक्स का उपयोग करते हुए, प्रतीकात्मक रूप से वर्तमान निर्देशिका में सभी फ़ाइलों को लिंक करता है जो * img001.jpg ',' img002.jpg 'और इसी तरह के अनुक्रम में' jpg 'से मेल खाते हैं।

x=1; for i in *jpg; do counter=$(printf %03d $x); ln -s "$i" /tmp/img"$counter".jpg; x=$(($x+1)); done


मैं कई दृश्यों गठबंधन करने के लिए इस प्रयोग किया जाता है seqA-[0001-n].png, seqB-[0001-n].pngआदि Image2 ग्लोबिंग और concat फिल्टर के साथ चारों ओर खिलवाड़ की तुलना में बहुत आसान।
z0r

मेरे लिए यह तब तक काम नहीं आया जब तक मैंने for i in *jpgसाथ नहीं दिया for i in /full/path/*jpg, क्योंकि सभी
सिम्बलिंक

4

मैं वास्तव में वही बात सुझाऊंगा जो मुल्व्या ने सुझाई थी। जब भी मुझे 3D एनीमेशन रेंडरिंग से निपटने के लिए इस तरह से सामान की आवश्यकता होती है, तो मैंने उन्हें अनुक्रमिक बनाने के लिए फ़ाइलों का नाम बदल दिया है। जब तक आपको किसी कारण से फ़ाइल नामों को संरक्षित करने की आवश्यकता नहीं है, तब तक बहुत सारे अलग-अलग सॉफ़्टवेयरों में उस तरह से काम करना आसान है। कुल कमांडर भी बहु-नाम बदलने के लिए एक महान उपकरण है।


मैंने कुछ ऐसा ही किया (एक पायथन नामकरण स्क्रिप्ट)।
Brigand

3

लापता अनुक्रम भाग के लिए, मैंने 2 लाइनर का उपयोग किया

CONCAT=$(echo $(ls *.png | sort -n -t _ -k 2) | sed -e "s/ /|/g")
ffmpeg -framerate 25 -i "concat:$CONCAT" -c:v libx264 -profile:v high -pix_fmt yuv420p output.mp4

आशा है कि यह भविष्य में किसी की मदद करेगा

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.