Yes, this can be achieved in Power Automate. The easiest approach is to use the SharePoint trigger “When a file is created (properties only)” and then check the uploaded file's content type or extension.
Approach 1: Check the file extension
After the SharePoint trigger, add a Condition and use the following expression:
or(
endsWith(toLower(triggerOutputs()?['body/{FilenameWithExtension}']), '.mp4'),
endsWith(toLower(triggerOutputs()?['body/{FilenameWithExtension}']), '.mov'),
endsWith(toLower(triggerOutputs()?['body/{FilenameWithExtension}']), '.avi'),
endsWith(toLower(triggerOutputs()?['body/{FilenameWithExtension}']), '.mkv'),
endsWith(toLower(triggerOutputs()?['body/{FilenameWithExtension}']), '.wmv'),
endsWith(toLower(triggerOutputs()?['body/{FilenameWithExtension}']), '.webm')
)
If the condition is true, continue with your video-processing actions. Otherwise, terminate the flow.
Approach 2: Check MIME / Content Type
A better approach is to check the file's MIME type. Video files generally have a content type such as:
video/mp4
video/quicktime
video/webm
After Get file metadata, you can check whether the content type starts with video/:
startsWith(
toLower(outputs('Get_file_metadata')?['body']['MediaType']),
'video/'
)
This means you don't have to maintain a list of every possible video extension.
Even better: Use Trigger Conditions
If the library contains a large number of files, I would recommend putting the condition in the trigger itself. This prevents the flow from actually running for PDFs, images, Word files, etc.
Go to:
Trigger → Settings → Trigger Conditions
and add a condition based on the file extension/content type.
For example:
@or(
endsWith(toLower(triggerOutputs()?['body/{FilenameWithExtension}']), '.mp4'),
endsWith(toLower(triggerOutputs()?['body/{FilenameWithExtension}']), '.mov'),
endsWith(toLower(triggerOutputs()?['body/{FilenameWithExtension}']), '.avi'),
endsWith(toLower(triggerOutputs()?['body/{FilenameWithExtension}']), '.mkv')
)
So the overall flow becomes:
SharePoint → When a file is created → Trigger Condition → Video only → Process video
This is more efficient because non-video uploads won't trigger unnecessary flow runs.