Public/Start-Transcode.ps1

function Start-Transcode {
    <#
    .DESCRIPTION
    Transcodes video files containing extenstions *.mp4, *.mkv, *.avi, and *.mpg
 
    Inputed Parameters are
 
    -c:v libx265 -crf 21 -ac 6 -c:a aac -preset veryfast
 
    .PARAMETER outpath
    Specify the save path for the transcoded files
 
    .NOTES
    Outpath folder must already be created prior to running the command
 
    .Example
    Specify the output path for the remuxed files
 
    Start-Transcode -outpath "c:\files\new files\"
    #>

    [cmdletbinding()]
    param (
        [Parameter(Mandatory = $true)]
        [ValidateScript( { if ( -not (Test-Path $_)) { throw "Path '$_' doesn't exist. Create the Directory First" } else { $true } })]
        [ValidateScript( { if ($_ -notmatch '.+?\\$') { throw "Path '$_' must end with a backslash" } else { $true } })]
        $outpath
    )

    $ext = "*.mkv"
    $array = @(Get-ChildItem -filter $ext)
    Foreach ($video in $array.Name) {
        ffmpeg.exe -i $video -c:v libx265 -crf 21 -ac 6 -c:a aac -preset veryfast "$outpath$video"
    }

    $ext = "*.avi"
    $array = @(Get-ChildItem -filter $ext)
    Foreach ($video in $array.Name) {
        ffmpeg.exe -i $video -c:v libx265 -crf 21 -ac 6 -c:a aac -preset veryfast "$outpath$video"
    }

    $ext = "*.mp4"
    $array = @(Get-ChildItem -filter $ext)
    Foreach ($video in $array.Name) {
        ffmpeg.exe -i $video -c:v libx265 -crf 21 -ac 6 -c:a aac -preset veryfast "$outpath$video"
    }

    $ext = "*.mpg"
    $array = @(Get-ChildItem -filter $ext)
    Foreach ($video in $array.Name) {
        ffmpeg.exe -i $video -c:v libx265 -crf 21 -ac 6 -c:a aac -preset veryfast "$outpath$video"
    }
}