We're looking to enhance a video using Ffmpeg by implementing several effects sequentially. First, we aim to apply a blur effect to the entire video. Then, we want to overlay a logo and a waveform onto the blurred video. Finally, we need to add a border around the entire composition. This step-by-step process requires precise commands and careful consideration of parameters to achieve the desired result effectively. I utilized Ffmpeg commands to sequentially apply blur, overlay the logo and waveform, and add a border to the video. I expected each effect to be applied in the specified order, resulting in a visually enhanced video with all desired elements. However, I encountered challenges in properly configuring the parameters for each effect, leading to unexpected results such as misaligned overlays or improper blur intensity.
@echo off
setlocal enabledelayedexpansion
rem Set paths and directories
set "ffmpeg_path=C:\ffmpeg\bin\ffmpeg.exe"
set "input_dir=_input"
set "output_dir=_output"
rem Ensure input and output directories exist
if not exist "%input_dir%" (
echo Error: Input directory "%input_dir%" not found.
exit /b 1
)
if not exist "%output_dir%" (
mkdir "%output_dir%"
)
rem Loop through input directory
for %%t in ("%input_dir%\*.*") DO (
rem Process each file with ffmpeg
"%ffmpeg_path%" -y -i "%%t" -i logo.png -filter_complex "\
[0:v]eq=brightness=0.2:saturation=2.0:contrast=1.2, crop=iw/1.2:ih/1.2, \
boxblur=1:2 [blurred_bg]; \
[blurred_bg][1:v]overlay=(main_w-overlay_w)/2:(main_h-overlay_h-10)[bg_with_logo]; \
[0:a]showwaves=s=1080x100:mode=line:colors=white [waveform]; \
[bg_with_logo][waveform]overlay=10:H-h-10, \
format=yuv420p[v]; \
[v]pad=iw+20:ih+20:x=10:y=10:color=white[final_output]" \
-map "[final_output]" -map 0:a -c:v h264 -c:a aac -b:a 128k -ar 44100 "%output_dir%\temp.mp4"
rem Check if output file exists
if exist "%output_dir%\temp.mp4" (
rem Calculate new MD5 hash
certutil -hashfile "%output_dir%\temp.mp4" MD5 > "%output_dir%\temp_md5.txt"
rem Remove ID3 tag metadata
"%ffmpeg_path%" -i "%output_dir%\temp.mp4" -map_metadata -1 -c:v copy -c:a copy "%output_dir%\%%~nt.mp4"
rem Clean up temporary files
del "%output_dir%\temp.mp4"
del "%output_dir%\temp_md5.txt"
) else (
echo Error: Failed to create output file for "%%~nt"
)
)
pause