$ovkRoot = $args[0] $storageDir = $args[1] $fileHash = $args[2] $hashPart = $fileHash.substring(0, 2) $filename = $args[3] $audioFile = [System.IO.Path]::GetTempFileName() $temp = [System.IO.Path]::GetTempFileName() $keyID = $args[4] $key = $args[5] $token = $args[6] $seg = $args[7] $shell = Get-WmiObject Win32_process -filter "ProcessId = $PID" $shell.SetPriority(16384) # because there's no "nice" program in Windows we just set a lower priority for entire tree Remove-Item $temp Remove-Item $audioFile New-Item -ItemType "directory" $temp New-Item -ItemType "directory" ("$temp/$fileHash" + '_fragments') New-Item -ItemType "directory" ("$storageDir/$hashPart/$fileHash" + '_fragments') Set-Location -Path $temp Move-Item $filename $audioFile ffmpeg -i $audioFile -f dash -encryption_scheme cenc-aes-ctr -encryption_key $key ` -encryption_kid $keyID -map 0:a -vn -c:a aac -ar 44100 -seg_duration $seg ` -use_timeline 1 -use_template 1 -init_seg_name ($fileHash + '_fragments/0_0.$ext$') ` -media_seg_name ($fileHash + '_fragments/chunk$Number%06d$_$RepresentationID$.$ext$') -adaptation_sets 'id=0,streams=a' ` "$fileHash.mpd" ffmpeg -i $audioFile -vn -ar 44100 "original_$token.mp3" Move-Item "original_$token.mp3" ($fileHash + '_fragments') Get-ChildItem -Path ($fileHash + '_fragments/*') | Move-Item -Destination ("$storageDir/$hashPart/$fileHash" + '_fragments') Move-Item -Path ("$fileHash.mpd") -Destination "$storageDir/$hashPart" cd .. Remove-Item -Recurse $temp Remove-Item $audioFile