2012-06-07 37 views
10

मैं एक वीडियो स्केल करने की कोशिश कर रहा हूं ताकि यह हमेशा 512 चौड़ा हो जहां ऊंचाई मूल वीडियो के अनुपात में बदल जाती है। एक बार स्केल किए जाने पर, मैं वीडियो पर वॉटरमार्क/ओवरले लागू करना चाहता हूं, इसलिए वीडियो स्केल करेगा लेकिन वॉटरमार्क नहीं होगा।एफएफएमपीईजी - वीडियो कैसे स्केल करें और फिर वॉटरमार्क लागू करें?

मैं इन अलग से निम्नलिखित फ़िल्टर का उपयोग कर से प्रत्येक को प्राप्त करने में सक्षम हूँ:

स्केल

-vf "scale=512:-1" 

वॉटरमार्क

-vf "movie=watermark.png [watermark]; [in][watermark] overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2 [out]" 

वे अपने दम पर सफलतापूर्वक काम करते हैं।

हालांकि, दोनों को गठबंधन करने की कोशिश करते समय, मुझे कुछ परेशानी होती है।

पाठ्यक्रम के पैरामीटर दोनों के रूप में काम नहीं करता है क्योंकि एक दूसरे को ओवरराइड करेगा।

Ive की कोशिश की:

-vf "scale=512:-1,movie=watermark.png [watermark]; [in][watermark] overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2 [out]" 

मेरी सोच है कि पैमाने पहले लागू किया जाएगा तो वॉटरमार्क था, लेकिन सब मैं एक त्रुटि

बहुत सारे आदानों "फिल्म" फिल्टर के लिए निर्दिष्ट किया है ।

फ़िल्टर खोलने में त्रुटि!

फिर, एक को बदलना; परिणामस्वरूप:

सरल फ़िल्टरग्राफ स्केल = 512: -1; फिल्म = वॉटरमार्क.png [वॉटरमार्क]; [में] [वॉटरमार्क] ओवरले = (main_w-overlay_w)/2: (main_h-overlay_h)/2 [out] 'में बिल्कुल एक इनपुट और आउटपुट नहीं है।

फ़िल्टर खोलने में त्रुटि!

मुझे लगता है कि मुझे फ़िल्टरचंस के साथ कुछ और करने की ज़रूरत है, लेकिन मैं इसे समझने के लिए संघर्ष कर रहा हूं।

कोई भी विचार किसी को भी?

अग्रिम में बहुत धन्यवाद।

+2

प्रोग्रामिंग से संबंधित नहीं - http://superuser.com आज़माएं? –

+0

मुझे लगता है कि यह वॉटरमार्क छवि के पहले पैमाने पर और स्केल वीडियो में इसे लागू करने के बाद बेहतर है। आप दो प्रक्रियाओं के बीच एक पाइप करने की कोशिश कर सकते हैं। –

उत्तर

14

@DiJuMx और @LordNeckbeard दोनों के लिए धन्यवाद, आप दोनों ने मुझे अपने समाधान के करीब ले लिया। मैंने अभी तक filter_complex विकल्प को आजमाया नहीं है लेकिन यह निश्चित रूप से सरल दिखता है।

समाधान मैं काम करने के लिए मिल गया है:

-vf "movie=watermark.png [watermark]; [in]scale=512:trunc(ow/a/2)*2 [scale]; [scale][watermark] overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2 [out]" 

ध्यान दें कि Ive प्रतिस्थापित -1 पैमाने में है कि के रूप में जब स्केलिंग वीडियो की ऊंचाई में पिक्सल के एक असमान संख्या पैदा करने के लिए क्षमता थी जो फिर एन्कोडिंग त्रुटियों का कारण बन जाएगा।

16

आप पैमाने और ओवरले फ़िल्टर के साथ -filter_complex विकल्प का उपयोग कर सकते हैं:

ffmpeg -i input.mp4 -i logo.png -filter_complex "[0:v]scale=512:-1[bg];[bg][1:v]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" output 
  • अधिक जानकारी के लिए देखें scale और overlay फिल्टर प्रलेखन।
  • अन्य उदाहरणों में movie स्रोत फ़िल्टर की आवश्यकता नहीं है।
  • यदि आप री-एन्कोडिंग के बजाय मूल ऑडियो stream copy (पुनः-मक्स) करना चाहते हैं तो आप -c:a copy जोड़ सकते हैं।यह उपयोगी है यदि आपका इनपुट और आउटपुट कंटेनर प्रारूप समान हैं।
  • उदाहरण लोगो में केंद्र रखेगा। अन्य प्लेसमेंट विकल्पों के लिए: overlay=10:10
  • के साथ 10
  • ऊपरी दायां पिक्सल गद्दी: overlay=W-w-10:10
  • लोअर 10 पिक्सल गद्दी के साथ सही: overlay=W-w-10:H-h-10
  • लोअर 10 पिक्सल गद्दी के साथ छोड़ दिया
    • अपर 10 पिक्सल गद्दी के साथ छोड़ दिया: overlay=H-h-10:10
0

मैं क्या समझ से, यह काम हो सकता है:

-vf "movie=watermark.png [watermark]; [in] scale=512:-1,[watermark] overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2 [out]" 

आप "[in]" इनपुट में स्केल फ़िल्टर लागू करते हैं।

दुर्भाग्यवश मुझे ffmpeg पर फ़िल्टर के साथ अधिक अनुभव नहीं है इसलिए मैं आगे की सहायता नहीं कर सकता। क्षमा करें