将ffprobe fps乘以Powershell中的值

问题描述

我正在尝试使用ffprobe打印视频的倍增fps,

.\ffprobe.exe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=avg_frame_rate -i "$videopath" > rate 2>&1
$script:rate = [IO.File]::ReadAllText(".\rate")
$script:framerate = ($rate/2)
echo "Multiplied = "$framerate

这应该做的是将fps写入文件,然后ffprobe将其作为分数(在这种情况下为1/10),然后乘以2。

由于该变量被读取为文字文本,因此我无法将其乘以2,而是只给了我这个变量。

Multiplied =
1/10
1/10

有什么方法可以代替它打印Multiplied = 20

解决方法

Powershell无法理解分数,因此您需要将字符串转换为数字,然后进行数学运算。

$rate = "1/10";

# convert the string into numbers
$parts       = $rate.Split("/"); # @( "1","10")
$numerator   = [int] $parts[0];  # 1
$denominator = [int] $parts[1];  # 10

# do the math
$framerate = $denominator * 2; # 20

write-host "Multiplied = $framerate"
# Multiplied = 20