2012-02-06 11 views
12

मैं एफएफएमपीईजी का उपयोग कर किसी अन्य वीडियो के शीर्ष पर छवियों या वीडियो को प्रोग्रामेटिक रूप से ओवरले करने की कोशिश कर रहा हूं। ऐसा लगता है कि AVFilter यह कर सकता है।एफएफएमपीईजी एवीफिल्टर ओवरले/वॉटरमार्क प्रोग्रामेटिक रूप से

कमांड लाइन के साथ ऐसा या इसी तरह की चीजों को कैसे करना है, इसके कई उदाहरण हैं, मुझे प्रोग्राम/एक्टिवेटिव रूप से डॉक्टर/उदाहरण/फ़िल्टरिंग.c के अलावा प्रोग्रामिंग का उपयोग करने का कोई उदाहरण नहीं मिला है जो मुझे मदद करता है लेकिन वास्तव में पर्याप्त नहीं है। मैं पहले से ही एक वीडियो को डीकोड और एन्कोड कर सकता हूं, मुझे केवल डीकोडेड फ्रेम को फ़िल्टर करने और वॉटरमार्क जोड़ने का तरीका सीखना है।

क्या libavfilter प्रोग्रामेटिक रूप से उपयोग करने के कोई उदाहरण हैं?

क्या ओवरले या मूवी फ़िल्टर का उपयोग करने के उदाहरण हैं?

+0

कोड उदाहरण को मनमाने ढंग से फ़िल्टर लागू करने के लिए आसानी से संशोधित किया जा सकता है। समस्या क्या है? ओवरले और मूवी फ़िल्टर का उपयोग करने के उदाहरणों के लिए देखें [एफएफएमपीईजी का उपयोग करके वीडियो कैसे वॉटरमार्क करें] (http://www.idude.net/index.php/how-to-watermark-a-video-using-ffmpeg)। –

+1

उदाहरण के साथ समस्या यह है कि यह अधिभारित है (2 फ़िल्टर, फ़िल्टर ग्राफ, आदि)। किसी ऐसे व्यक्ति के लिए जो नया है और यह पता लगाना चाहता है कि एक एवीफिल्टर को कैसे लागू किया जाए, यह भ्रमित है, क्योंकि इससे यह स्पष्ट नहीं होता है कि शुरू करने के लिए बिल्कुल क्या आवश्यक है। –

उत्तर

7

आदेश:

ffmpeg –i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=10:10 [out]" outputvideo.flv 

ऊपरी बाएँ हाथ के कोने में छवि "watermarklogo.png" के साथ वीडियो पैदा करता है। इस आदेश को किसी अन्य प्रोग्राम से कॉल करना काफी सरल होना चाहिए। थोड़ा करके

इस विश्लेषण करना बिट यह समझना:

ffmpeg कार्यक्रम आप वॉटरमार्क जोड़ने के लिए उपयोग किया जाएगा है।

-i इनपुट फ़ाइलों को निर्दिष्ट करने के लिए उपयोग किया जाता है।

inputvideo.avi आपकी इनपुट फ़ाइल -i द्वारा निर्दिष्ट है।

-vf वीडियो फ़िल्टर निर्दिष्ट करने के लिए उपयोग किया जाता है। इस मामले में, यह उद्धरण में सबकुछ है।

movie=watermarklogo.png वह फ़ाइल लोड करेगा जिसे आप वॉटरमार्क के रूप में उपयोग करना चाहते हैं। फ़ाइल को एक वीडियो है या नहीं, इस पर ध्यान दिए बिना कि हम फ़ाइल को वीडियो स्रोत के रूप में लोड करते हैं (movie का उपयोग करके)। इस मामले में यह एक छवि है।

[watermark] आपके द्वारा अभी लोड की गई फ़ाइल को लेबल करता है। इस लेबल का उपयोग शेष कोड में किया जाएगा।

[in] और [out] इनपुट स्ट्रीम और वीडियो की आउटपुट स्ट्रीम का संदर्भ लें।

overlay[watermark] लेबल के ठीक बाद उपयोग किया जाता है ताकि यह इसका संदर्भ हो। इस साधारण मामले में हम overlay10:10 पर रखें। इसका मतलब है कि वॉटरमार्क को ऊपर से और बाईं ओर से 10 पिक्सेल ऑफसेट किया जाएगा। यदि आप नीचे दाएं चाहते थे तो आप overlay=main_w-overlay_w-10:main_h-overlay_h-10 का उपयोग करेंगे जहां main_w इनपुट स्ट्रीम की चौड़ाई है, overlay_h ओवरले फ़ाइल की ऊंचाई है, और इसी तरह।

आखिरकार, outputvideo.flv स्पष्ट रूप से वह फ़ाइल है जिसे आप परिणाम सहेजना चाहते हैं।

अतिरिक्त जानकारी:

मैं टिप्पणी में the site Dmitry had mentioned के माध्यम से इस जानकारी नहीं मिली। एलेक्स ने उल्लेख किया था कि यह पृष्ठ किसी ऐसे व्यक्ति के लिए बहुत जटिल हो सकता है जो ऐसी चीजों के लिए नया है।हालांकि, मैंने कभी ऐसा कुछ नहीं किया है और कुछ ही मिनटों के भीतर मेरे पास परिणाम थे जिन पर मेरा विश्वास है।

नोट:

error while opening encoder for output stream #0.1 

आप एक ही समस्या आप की संभावना मैन्युअल -ar पैरामीटर का उपयोग कर नमूने आवृत्ति निर्धारित करने की आवश्यकता है, तो (जैसे -ar: मैं मुसीबत जब मैं त्रुटि हो रही थी के एक पल था 22050)।

+0

क्या आप वॉटरमार्क के लिए समय निर्धारित कर सकते हैं? मान लें कि मैं चाहता हूं कि वॉटरमार्क 00:00 बजे शुरू हो और @ 01:00 गायब हो जाए, क्या यह संभव है? – rroche

+0

@rroche चेक करें [यह पोस्ट] (http://stackoverflow.com/questions/9160771/ffmpeg-watermark- फर्स्ट-30- सेकेंड)। फ़ेलिक्स का जवाब शायद सबसे सरल है, लेकिन दिमित्री का जवाब (ऊपर से वही दिमित्री) थोड़ा सा है और वॉटरमार्क से बाहर निकलने की अनुमति देता है। – golmschenk

+4

प्रश्न AVFilter लाइब्रेरी का उपयोग करने से संबंधित है, FFMPEG बाइनरी को नहीं बुला रहा है। – Erik

संबंधित मुद्दे