Batch process videos to increase speed

Hello,

I’m new to the forum, so hoping to get some tech savvy help on this one.

I have 58 short video clips that have recorded in slo-mo speed. I’m trying to increase the speed x4 in a batch rather than one at a time. I know how to do it individually, but is the batch processing is an option in Shotcut.

Any help - appreciated?

I don’t think it can be done directly in Shotcut (someone correct me if I’m wrong)

If you are familiar with FFmpeg though, you can use it to batch process all your 50+ video clips. (solution suggested by Gemini, I did not test it)

Assuming you’re on Windows and your files are MP4s

FFmpeg must be installed on your computer and added to Windows PATH.

Steps:

  • Copy the lines of code below and paste them in Notepad:
@echo off
setlocal enabledelayedexpansion
mkdir sped_up_4x

for %%i in (*.mp4) do (
    echo Processing: %%i
    
    rem Check if the file has an audio track
    ffprobe -v error -show_entries stream=codec_type -of csv=p=0 "%%i" | findstr /i "audio" >nul
    
    if !errorlevel! equ 0 (
        rem Video HAS audio -> Speed up both video and audio
        ffmpeg -y -i "%%i" -filter_complex "[0:v]setpts=0.25*PTS[v];[0:a]atempo=2.0,atempo=2.0[a]" -map "[v]" -map "[a]" "sped_up_4x\%%~nxi"
    ) else (
        rem Video is SILENT -> Speed up video only (ignore audio)
        ffmpeg -y -i "%%i" -filter_complex "[0:v]setpts=0.25*PTS[v]" -map "[v]" "sped_up_4x\%%~nxi"
    )
)
echo Batch processing complete!
pause
  • Save the txt file in the folder containing all your 50+ clips
  • Rename the txt file (including the extension) > speedup_4x.bat
  • Double-click the speedup_4x.bat file.

A black Command Prompt window will open, and FFmpeg will immediately begin processing all 50+ clips one after another. You will see text scrolling by as each video is processed.

Once the window says “Batch processing complete! Press any key to continue…”, the job is done, and all the new 4x accelerated videos will be sitting safely in the newly created sped_up_4x folder.

EDIT: In case your clips don’t meet the requirements in the Shotcut method suggested below by @shotcut, I just tested the FFmpeg method and it works.

If each video is going to have the same resolution, aspect ratio, and frame rate; then you can do it in Shotcut. Use Playlist and Export > From > Each Playlist Bin Item. Clips in a playlist can have unique trims, property changes, and filters.

ffmpeg issues unresolved in spite of reinstalling the programme and following instructions at cmd prompt it is not recognised. A bit stuck with this option - thanks for your advice in anycase

Sorry I’m not following the process. I have 57 selected videos in playlist. If I click on export I have 4 options. I’ve tested video/audio but that only converts 1 file at a time. Should I choose EDL ? not sure what that does… What is the next steps in this process for batch conversion? Thanks

You are using Export in the File menu. Most people use the Export panel that you get when you click Export in the main toolbar (or View > Export in the menu). Only the Export panel has the From > Each Playlist Bin Item. You still need to manually change the speed of each playlist item.

Windows 11 through Shell terminal has software included to set up ffmpeg automatically. The fiw I needed and is now doign the batch conversion. Link for info : How to Install and Use FFmpeg on Windows 11 - GeeksDigit.Com

Thanks again

So the FFmpeg method works for you now? Great.

@esam65
In case you ever need other multipliers than 4X, Gemini came up with new lines of code:

When you launch batch_speedup.bat, in the Command Prompt window you’re asked:
“Choose a speed multiplier (Whole numbers only: 2, 3, 4, 5, 6, 7, 8)”

Steps

  • Copy/paste the lines below in Notepad.
  • Save as batch_speedup.txt
  • Rename (including extension) to: batch_speedup.bat
  • Place the batch_speedup.bat file in the folder containing your video clips
  • Double-click the batch_speedup.bat file.
  • Type a multiplier (hole number)
  • Press Enter
@echo off
setlocal enabledelayedexpansion

echo ===================================================
echo             FFMPEG BATCH VIDEO SPEEDUP             
echo ===================================================
echo.
echo Choose a speed multiplier (Whole numbers only: 2, 3, 4, 5, 6, 7, 8)
set /p multiplier="Enter speed: "

rem --- Native Windows Logic for Video/Audio Filters ---
if "%multiplier%"=="2" (
    set "video_speed=0.5"
    set "audio_speed=atempo=2.0"
) else if "%multiplier%"=="3" (
    set "video_speed=0.333333"
    set "audio_speed=atempo=2.0,atempo=1.5"
) else if "%multiplier%"=="4" (
    set "video_speed=0.25"
    set "audio_speed=atempo=2.0,atempo=2.0"
) else if "%multiplier%"=="5" (
    set "video_speed=0.20"
    set "audio_speed=atempo=2.0,atempo=2.5"
) else if "%multiplier%"=="6" (
    set "video_speed=0.166667"
    set "audio_speed=atempo=2.0,atempo=2.0,atempo=1.5"
) else if "%multiplier%"=="7" (
    set "video_speed=0.142857"
    set "audio_speed=atempo=2.0,atempo=2.0,atempo=1.75"
) else if "%multiplier%"=="8" (
    set "video_speed=0.125"
    set "audio_speed=atempo=2.0,atempo=2.0,atempo=2.0"
) else (
    echo.
    echo Error: Invalid speed selection. Please choose a whole number between 2 and 8.
    pause
    exit /b
)

rem --- Setup Output Directory ---
set "out_dir=sped_up_%multiplier%x"
mkdir "%out_dir%" 2>nul

echo.
echo Processing files at %multiplier%x speed...
echo Saving to folder: \%out_dir%
echo ---------------------------------------------------

for %%i in (*.mp4) do (
    echo Processing: %%i
    
    rem Check if the file has an audio track
    ffprobe -v error -show_entries stream=codec_type -of csv=p=0 "%%i" | findstr /i "audio" >nul
    
    if !errorlevel! equ 0 (
        rem Video HAS audio
        ffmpeg -y -v error -stats -i "%%i" -filter_complex "[0:v]setpts=!video_speed!*PTS[v];[0:a]!audio_speed![a]" -map "[v]" -map "[a]" "%out_dir%\%%~nxi"
    ) else (
        rem Video is SILENT
        ffmpeg -y -v error -stats -i "%%i" -filter_complex "[0:v]setpts=!video_speed!*PTS[v]" -map "[v]" "%out_dir%\%%~nxi"
    )
)

echo.
echo ===================================================
echo Batch processing complete!
echo ===================================================
pause