Public/Start-Transcode.ps1

<#
    .DESCRIPTION
    Transcodes video files containing extensions *.mp4, *.mkv, *.avi, and *.mpg
 
    Inputted Parameters are
 
    -c:v libx265 -crf 21 -ac 6 -c:a aac -preset veryfast
 
    .PARAMETER crf
    Default is set to 21. Use this parameter to change it to another value.
 
    .Example
    Start-Transcode
 
    .Link
    https://github.com/TheTaylorLee/AdminToolbox
#>


function Start-Transcode {

    [cmdletbinding()]
    [Alias('Transcode')]
    param (
        [Parameter(Mandatory = $False)]$crf = 21
    )

    if ($env:FFToolsSource -and $env:FFToolsTarget) {
        #Change directory to the source folder
        Set-Location $env:FFToolsSource


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

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

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

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

    else {
        Write-Warning "You must first run Set-FFToolsVariables! This is only required once."
    }
}