-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.ps1
More file actions
26 lines (23 loc) · 1.01 KB
/
Copy pathscript.ps1
File metadata and controls
26 lines (23 loc) · 1.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
param (
[Parameter(Mandatory=$true, ValueFromRemainingArguments=$true)]
[System.IO.FileInfo[]]$VIDEOS
)
[byte]$AUDIO_BITRATE_KBPS = 80
[Double]$MAX_SIZE_MB = 10
[byte]$SPLITS = 2
foreach ($VIDEO in $VIDEOS) {
[Double]$SEGMENT_DURATION = (ffprobe -i $VIDEO.FullName -v error -show_entries "format=duration" -of csv=p=0) / $SPLITS
[Double]$VIDEO_BITRATE_KBPS = $MAX_SIZE_MB * 8192 / $SEGMENT_DURATION - $AUDIO_BITRATE_KBPS
for ($I = 0; $I -lt $SPLITS; $I++) {
ffmpeg -ss ($SEGMENT_DURATION * $I) -t $SEGMENT_DURATION -i $VIDEO.FullName `
-vf "scale=-2:min(540\,iw)" `
-c:a libopus -b:a "${AUDIO_BITRATE_KBPS}k" `
-c:v libx264 -b:v "${VIDEO_BITRATE_KBPS}k" `
-maxrate "${VIDEO_BITRATE_KBPS}k" `
-bufsize "$($VIDEO_BITRATE_KBPS * 2)k" `
-profile:v high -level 4.1 -preset veryslow `
-x264-params "rc-lookahead=240:ref=6" `
-tune animation -movflags +faststart `
"$($VIDEO.BaseName)_${I}_converted.mp4"
}
}