2009-10-13 8 views
5

चूंकि vhook उपप्रणाली को FFMPEG के नवीनतम संस्करण से हटा दिया गया है, इसलिए मैं एक वीडियो में वॉटरमार्क कैसे जोड़ सकता हूं?vhfm के बिना ffmpeg वॉटरमार्क?

मुझे पृष्ठभूमि पारदर्शिता के साथ एक पीएनजी ओवरले करने में सक्षम होना चाहिए।

उत्तर

0

यदि आप जावा से परिचित हैं, तो आप इसे Xuggler के साथ कर सकते हैं। विशेष रूप से MediaTool Xuggler के एपीआई के लिए ट्यूटोरियल आपको दिखाता है कि वीडियो को डीकोड और एन्कोड कैसे करें, और अलग-अलग छवियों का उपयोग करके वीडियो को स्क्रैच से कैसे बनाएं। उन कार्यक्रमों को बनाने के लिए उन अवधारणाओं को गठबंधन करना मुश्किल नहीं है जो वीडियो को डीकोड कर सकते हैं, वीडियो पर एक पीएनजी ओवरले कर सकते हैं, और फिर फिर से एन्कोड कर सकते हैं।

+3

मैं ffmpeg के साथ रहना चाहते हैं, विभिन्न स्वरूपों एन्कोडिंग पहले से ही कठिन एक उपकरण श्रृंखला के साथ पर्याप्त है और मैं में एक दूसरे से फेंकने के लिए नफरत करता हूँ मिश्रण। सुझाव के लिए धन्यवाद! –

4

Xuggler का उपयोग करके हम जावा में ऐसा कर सकते हैं। IMediaTool का उपयोग करके वीडियो एन्कोड करते समय, आपको छवियों का क्रम प्राप्त होगा। इन छवियों का उपयोग इन छवियों में से प्रत्येक पर पानी का निशान रखें और आउटपुट वीडियो उत्पन्न करें। निम्नलिखित कोड ब्लॉक

BufferedImage imageB = event.getImage(); 

/*....................... water mark .........................*/ 
Graphics2D g2d = (Graphics2D) imageB.getGraphics(); 
g2d.drawImage(imageB, 0, 0, null); 

//Create an alpha composite of 50% 
AlphaComposite alpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f); 
g2d.setComposite(alpha); 

g2d.setColor(Color.YELLOW); 


g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, 
RenderingHints.VALUE_TEXT_ANTIALIAS_ON); 

g2d.setFont(new Font("Arial", Font.BOLD, 30)); 

String watermark = "Sample water mark"; 

FontMetrics fontMetrics = g2d.getFontMetrics(); 
Rectangle2D rect = fontMetrics.getStringBounds(watermark, g2d); 
yScrolling = imageB.getHeight() - (int) rect.getHeight()/2; 

g2d.drawString(watermark, (imageB.getWidth() - (int) rect.getWidth())/2, 
         (imageB.getHeight() - (int) rect.getHeight())/2); 
g2d.drawString(watermark, xScrolling,yScrolling); 

//Free graphic resources 
g2d.dispose(); 

/*....................... water mark .........................*/ 
2

यदि आप आधिकारिक गिट भंडार से ffmpeg संकलित करते हैं, तो आपको शायद वाक्यविन्यास पर ध्यान देना होगा क्योंकि यह नए संस्करणों में थोड़ा सा बदल गया है।

पुरानी

ffmpeg -i input.mp4 -acodec copy -vf "movie=0:png:watermark.png [wm];[in][wm] overlay=5:5:1 [out]" -f mp4 -b 2500k -vcodec libx264 -vpre fast -ac 1 -y output.mp4 

न्यू

ffmpeg -i input.mp4 -acodec copy -vf "movie=watermark.png [wm];[in][wm] overlay=5:5 [out]" -f mp4 -b 2500k -vcodec libx264 -vpre fast -ac 1 -y output.mp4