问题描述
我正在尝试使用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