34 lines
919 B
PowerShell
34 lines
919 B
PowerShell
<#
|
|
.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)
|