Drag'n'drop to compress/edit video using ffmpeg
Written by pmd - - no comments1. Download ffmpeg
Link to download ffmpeg: https://github.com/BtbN/FFmpeg-Builds/releases
2. Create a *.bat file
compress_video_multiple_file.bat
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%A IN (%*) DO (
ECHO %%A
SET input=%%A
ECHO !input!
SET "output=!input!.compressed.mp4"
ECHO !output!
::"C:\path\to\ffmpeg-master-latest-win64-gpl\bin\ffmpeg" -y -i !input! -vcodec h264 -acodec mp3 !output!
"C:\path\to\ffmpeg-master-latest-win64-gpl\bin\ffmpeg" -y -i !input! -vcodec libx264 -preset veryfast -crf 23 -g 30 -acodec aac !output!
)
pause
pause
:: OTHER THING YOU COULD PUT IN THE COMMAND LINE:
:: ----------------------------------------------
:: HORIZONTAL VERTICAL
:: TO CHANGE OUTPUT RESOLUTION to 1080p (HD) => -s "1920x1080" -s "1080x1920"
:: to 720p (HD) => -s "1280x720" -s "720x1280"
:: to 480p (SD) => -s "854x480" -s "480x854"
:: to 360p (SD) => -s "640x360" -s "360x640"
:: to 240p (SD) => -s "426x240" -s "240x426"
::
:: TO KEEP ONLY SOME TIME (HH:mm:ss) => -ss 00:00:20 -to 00:00:40
::
Discussion about ffmpeg command line to use: Compress mp4 using FFMPEG · GitHub
Setting a variable into a for loop (batch)
3. Create a shortcut on Desktop and drag'n'drop
It will create a new file in same path than the video you want to compress with following name: "original_file_name.extension.compressed.mp4".
You can drag'n'drop several files.
4. Other ffmpeg tricks
add_png_watermark_in_center.bat
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%A IN (%*) DO (
ECHO %%A
SET input=%%A
ECHO !input!
SET "output=!input!.watermarked.mp4"
ECHO !output!
"C:\path\to\ffmpeg-master-latest-win64-gpl\bin\ffmpeg" -y -i !input! -i "C:\path\to\some_text.png" -filter_complex "[1]format=rgba,colorchannelmixer=aa=0.1[logo];[0][logo]overlay=(W-w)/2:(H-h)/2:format=auto,format=yuv420p" -c:a copy !output!
)
pause
:: https://stackoverflow.com/questions/10918907/how-to-add-transparent-watermark-in-center-of-a-video-with-ffmpeg
::
:: Centered: overlay=(W-w)/2:(H-h)/2
:: Top left: overlay=5:5
:: Top right: overlay=W-w-5:5
:: Bottom right: overlay=W-w-5:H-h-5
:: Bottom left: overlay=5:H-h-5
:: Transparency / opacity / alpha: adjust aa=0.1
add_text_watermark_in_center.bat
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%A IN (%*) DO (
ECHO %%A
SET input=%%A
ECHO !input!
SET "output=!input!.watermarked.mp4"
ECHO !output!
SET /p stuff="What text do you want ? ":
"C:\path\to\ffmpeg-master-latest-win64-gpl\bin\ffmpeg" -y -i !input! -vf "drawtext=text='!stuff!':x=(w-text_w)/2:y=h-th-30:fontfile='C\:/\Windows/\Fonts/\calibrib.ttf':fontsize=48:fontcolor=white:alpha=0.9" -c:a copy !output!
)
pause
:: https://superuser.com/questions/939357/how-to-position-drawtext-text
::
:: Top left: x=0:y=0 (with 10 pixel padding x=10:y=10)
:: Top center: x=(w-text_w)/2:y=0 (with 10 px padding x=(w-text_w)/2:y=10)
:: Top right: x=w-tw:y=0 (with 10 px padding: x=w-tw-10:y=10)
:: Centered: x=(w-text_w)/2:y=(h-text_h)/2
:: Bottom left: x=0:y=h-th (with 10 px padding: x=10:y=h-th-10)
:: Bottom center: x=(w-text_w)/2:y=h-th (with 10 px padding: x=(w-text_w)/2:y=h-th-10)
:: Bottom right: x=w-tw:y=h-th (with 10 px padding: x=w-tw-10:y=h-th-10)
add_time_at_end.bat
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%A IN (%*) DO (
ECHO %%A
SET input=%%A
ECHO !input!
SET "output=!input!.extended.mp4"
ECHO !output!
SET /p stuff="How long do you need to add at the end of video in seconds ? ":
SET /a "stuffminus=!stuff!-1"
"C:\path\to\ffmpeg-master-latest-win64-gpl\bin\ffmpeg" -y -i !input! -filter_complex " [0:v]tpad=stop_mode=clone:stop_duration=!stuff!,setpts=PTS-STARTPTS[v]; [0:a]apad=pad_dur=!stuff!,asetpts=PTS-STARTPTS[a]" -map "[v]" -map "[a]" -c:v libx264 -c:a aac -r 29.917 !output!
)
pause
add_time_in_beginning.bat
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%A IN (%*) DO (
ECHO %%A
SET input=%%A
ECHO !input!
SET "output=!input!.preextended.mp4"
ECHO !output!
SET /p stuff="How long do you need to add at begining of video in seconds ? ":
SET /a "stuffminus=!stuff!-1"
"C:\path\to\ffmpeg-master-latest-win64-gpl\bin\ffmpeg" -y -i !input! -filter_complex " [0:v]trim=start=0:duration=1,select=eq(n\,0),scale=iw:ih,setsar=1,fps=1,loop=!stuffminus!:1:0,setpts=N/(1*TB)[vintro]; [0:v]setpts=PTS-STARTPTS[vmain]; [vintro][vmain]concat=n=2:v=1:a=0[v]; anullsrc=channel_layout=stereo:sample_rate=48000,atrim=duration=!stuff![asilence]; [0:a]atrim=start=0,asetpts=PTS-STARTPTS[aoriginal]; [asilence][aoriginal]concat=n=2:v=0:a=1[a]" -map "[v]" -map "[a]" -c:v libx264 -r 29.917 -c:a aac -shortest !output!
)
pause
merge_two_video_verticaly.bat
SETLOCAL ENABLEDELAYEDEXPANSION
SET n=0
FOR %%A IN (%*) DO (
ECHO %%A
SET input[!n!]=%%A
ECHO !input[%n%]!
SET "output=!input[%n%]!.no_in_use.mp4"
ECHO !output!
SET /A n+=1
)
"C:\path\to\ffmpeg-master-latest-win64-gpl\bin\ffmpeg" -y -i !input[0]! -i !input[1]! -filter_complex "[0:v][1:v]hstack=inputs=2[v];[0:a]volume=1.0[a0];[1:a]volume=0.1[a1];[a0][a1]amix=inputs=2[a]" -map "[v]" -map "[a]" -c:v libx264 -c:a aac -strict experimental -shortest -r 29.917 output_merged.mp4
pause
:: https://stackoverflow.com/questions/11552565/vertically-or-horizontally-stack-mosaic-several-videos-using-ffmpeg
accelerate_video_multiple_file.bat
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%A IN (%*) DO (
ECHO %%A
SET input=%%A
ECHO !input!
SET "output=!input!.speed2x.mp4"
ECHO !output!
"C:\path\to\ffmpeg-master-latest-win64-gpl\bin\ffmpeg" -i !input! -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2[a]" -map "[v]" -map "[a]" !output!
)
pause
concatenate_two_video.bat
SETLOCAL ENABLEDELAYEDEXPANSION
SET n=0
FOR %%A IN (%*) DO (
ECHO %%A
SET input[!n!]=%%A
ECHO !input[%n%]!
SET "output=!input[%n%]!.no_in_use.mp4"
ECHO !output!
SET /A n+=1
)
"C:\path\to\ffmpeg-master-latest-win64-gpl\bin\ffmpeg" -y -i !input[0]! -i !input[1]! -filter_complex "[0:v] [0:a] [1:v] [1:a] concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" output_concatenated.mkv
pause
:: https://stackoverflow.com/questions/7333232/how-to-concatenate-two-mp4-files-using-ffmpeg