Public/Start-Transcode.ps1

<#
.DESCRIPTION
Transcodes video files containing extensions *.mp4, *.mkv, *.avi, and *.mpg
 
Inputted Parameters are
 
-metadata title="" -metadata description="" -metadata COMMENT="transcoded" -c:v libx265 -crf 21 -c:a copy -preset veryfast
 
.PARAMETER crf
Default is set to 21. Use this parameter to change it to another value.
 
.PARAMETER mapall
Will map in all streams
 
.Example
Start-Transcode
 
.Link
https://github.com/TheTaylorLee/AdminToolbox
#>


function Start-Transcode {

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

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

        if ($mapall) {
            $ext = "*.mkv"
            $array = @(Get-ChildItem -Filter $ext)
            Foreach ($video in $array.Name) {
                ffmpeg.exe -i $video -map 0:v:0? -map 0:a? -map 0:s? -metadata title="" -metadata description="" -metadata COMMENT="transcoded" -c:v libx265 -crf $crf -c:a copy -c:s copy -preset veryfast "$env:FFToolsTarget$video"
            }

            $ext = "*.avi"
            $array = @(Get-ChildItem -Filter $ext)
            Foreach ($video in $array.Name) {
                ffmpeg.exe -i $video -map 0:v:0? -map 0:a? -map 0:s? -metadata title="" -metadata description="" -metadata COMMENT="transcoded" -c:v libx265 -crf $crf -c:a copy -c:s copy -preset veryfast "$env:FFToolsTarget$video"
            }

            $ext = "*.mp4"
            $array = @(Get-ChildItem -Filter $ext)
            Foreach ($video in $array.Name) {
                ffmpeg.exe -i $video -map 0:v:0? -map 0:a? -map 0:s? -metadata title="" -metadata description="" -metadata COMMENT="transcoded" -c:v libx265 -crf $crf -c:a copy -c:s copy -preset veryfast "$env:FFToolsTarget$video"
            }

            $ext = "*.mpg"
            $array = @(Get-ChildItem -Filter $ext)
            Foreach ($video in $array.Name) {
                ffmpeg.exe -i $video -map 0:v:0? -map 0:a? -map 0:s? -metadata title="" -metadata description="" -metadata COMMENT="transcoded" -c:v libx265 -crf $crf -c:a copy -c:s copy -preset veryfast "$env:FFToolsTarget$video"
            }
        }

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

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

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

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

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