<# .SYNOPSIS Gets the total frame count of a video file using ffprobe. .PARAMETER Video Path to the input video file. Can be absolute or relative to current directory. .DESCRIPTION Gets the total frame count of a video file using ffprobe. #> param( [Parameter(Mandatory = $true)] [string]$Video ) Set-StrictMode -Version Latest $ErrorActionPreference = 'Stop' $VideoPath = $Video if (-not (Test-Path $VideoPath)) { Write-Error ('Video file not found: {0}' -f $VideoPath) exit 1 } $PSNativeCommandUseErrorActionPreference = $false $totalFrames = & ffprobe -v error -select_streams v:0 -count_frames -show_entries stream=nb_read_frames -of csv=p=0 $VideoPath 2>&1 | Select-Object -First 1 if (-not $totalFrames -or $totalFrames -notmatch '^\d+$') { Write-Error ('Could not determine frame count for: {0}' -f $VideoPath) exit 1 } Write-Host ('Total frames: {0}' -f $totalFrames)