FFmpeg is a popular open-source tool that is perfect for manipulating and processing video, images, and audio. A common task for video editors is adding a watermark to a video, which can help protect intellectual property or provide branding. And this task can be easily and proficiently carried out by FFmpeg with just a couple of command lines.
In this technical blog post, we’ll delve into the process of adding a watermark using FFmpeg, exploring the essential commands and explanations you need to master this task effectively.
Table of Contents
Why Add a Watermark?
Before diving into the technical aspects, let’s briefly address the importance of adding a watermark to videos. Watermarks serve multiple purposes:
- Protect Intellectual Property: Adding a watermark can deter unauthorized use or distribution of your videos, as it clearly marks them as your property.
- Branding: For businesses and content creators, watermarks are a way to reinforce brand identity and make content recognizable.
- Content Attribution: In cases where you want viewers to know the source of the video, watermarks can provide that information.
Now, let’s get down to the nitty-gritty of adding a watermark in FFmpeg.
To add a watermark using FFmpeg, you’ll need to follow these steps:
- Install FFmpeg: If you haven’t already, download and install FFmpeg on your system. You can find installation instructions for your specific platform on the FFmpeg website.
- Prepare Your Watermark: Ensure you have the watermark image or video file ready.
- This could be a PNG image with a transparent background (static watermark)
- Or, another video file with the desired watermark animation (dynamic watermark)
- Construct the FFmpeg Command: The heart of the process lies in constructing the FFmpeg command with the appropriate options and filters. Below, we’ll explore different scenarios and commands.
The first step is to ensure that you have FFmpeg installed on your machine. The official FFmpeg repository (FFmpeg Downloads) houses the latest version, and you can pick up a static build from there for your operating system. However, OS-specific package managers are also available for obtaining the latest FFmpeg.
Utilize Chocolatey with:
choco install ffmpeg
Deploy apt-get via:
sudo apt-get install ffmpeg
- Mac OS X:
With Homebrew, simply execute:
brew install ffmpeg
Following the installation, access the terminal or command prompt and traverse to the directory containing your target files. For more examples and options for installing FFmpeg, go here.
After you’ve installed FFmpeg, you are ready to add watermarks to your files. Let’s learn how!
Adding a Static Image Watermark
To add a static watermark to your video, you need two input files:
- the video file that you want to watermark,
- and the image file that contains the watermark.
The image file can be in any format that FFmpeg supports, such as PNG, JPEG, BMP, etc. There are some conditions you need to ensure are met though, such as –
- The image file should also have the same dimensions as the video file, or smaller.
- If the image file is larger than the video file, it will be cropped to fit the video.
Let’s start with the simplest scenario: adding a static image watermark to a video. In this case, we’ll use a PNG image as the watermark.
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4
-i input.mp4: Specifies the input video file.
-i watermark.png: Specifies the input image file (watermark).
-filter_complex "overlay=10:10": This filter applies the overlay effect, positioning the watermark at coordinates (10,10) on the video frame.
output.mp4: Specifies the output video file.
The filter complex is a way of combining multiple filters in FFmpeg, and it can be specified with the
-filter_complex option. The
-filter_complex option allows you to create a graph of filters that can process multiple streams of data in parallel or sequentially.
Each filter in the graph can have one or more inputs and outputs, and can perform various transformations on the data, such as scaling, cropping, rotating, blending, etc.
overlay filter is one of the many filters that FFmpeg provides, and it takes two inputs and overlays one on top of the other. By default, it places the second input (the watermark) on the top-left corner of the first input (the video). The output of the filter complex is then written to
Customizing the Watermark Position
You can adjust the position of the watermark by changing the coordinates in the
overlay filter. For example:
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=50:50" output.mp4
This command positions the watermark at coordinates (50,50) on the video frame.
Adding a Dynamic Watermark
Now, let’s explore how to add a dynamic watermark, which can be a video file with its own animation. This is something you can consider when you have a dynamic watermark – something like a logo that rotates! Adding such a dynamic watermark can be done with a small change in the previous commands:-
ffmpeg -i input.mp4 -i watermark.mp4 -filter_complex "overlay=10:10" output.mp4
Here are what the commands mean –
-i input.mp4: Input video file.
-i watermark.mp4: Input video file serving as the dynamic watermark.
-filter_complex "overlay=10:10": This overlay filter places the watermark at coordinates (10,10).
output.mp4: Output video file.
By using a video file as the watermark, you can create engaging animations or watermark effects. Give it a try and let us know if it worked for you. 🙂
Customizing Watermark Transparency
To adjust the transparency of the watermark, you can use the
ffmpeg -i input.mp4 -i watermark.png -filter_complex "[0:v][1:v]overlay=10:10:format=auto,blend=all_mode='overlay':all_opacity=0.7" output.mp4
In this command, the
all_opacity parameter in the
blend filter controls the watermark’s transparency. A value of 0.7 means 70% opacity.
In this comprehensive guide, we’ve explored the process of adding watermarks using FFmpeg for both static images and dynamic video overlays. You’ve learned how to position watermarks, customize their transparency, and create engaging effects to protect your content or reinforce your brand.
If you are interested in FFmpeg, then do check out the rest of our FFmpeg tutorials on OTTVerse.
Thank you and until next time, happy streaming!
Krishna Rao Vijayanagar
Krishna Rao Vijayanagar, Ph.D., is the Editor-in-Chief of OTTVerse, a news portal covering tech and business news in the OTT industry.
With extensive experience in video encoding, streaming, analytics, monetization, end-to-end streaming, and more, Krishna has held multiple leadership roles in R&D, Engineering, and Product at companies such as Harmonic Inc., MediaMelon, and Airtel Digital. Krishna has published numerous articles and research papers and speaks at industry events to share his insights and perspectives on the fundamentals and the future of OTT streaming.