Private/Convert-TranscodeOptions.ps1
|
function Convert-TranscodeOptions { [CmdletBinding()] param( [Parameter(Mandatory)] [ValidateSet('Flac', 'Aiff', 'Wav', 'Mp3')] [string]$TargetFormat, [Parameter()] [ValidateRange(8, 320)] [int]$BitrateKbps = 320, [Parameter()] [ValidateRange(8000, 384000)] [int]$SampleRate ) $formatMap = @{ Flac = [ordered]@{ Extension = 'flac' AudioArguments = @('-c:a', 'flac') MuxerArguments = @() } Aiff = [ordered]@{ Extension = 'aiff' AudioArguments = @('-c:a', 'pcm_s16be') MuxerArguments = @('-write_id3v2', '1') } Wav = [ordered]@{ Extension = 'wav' AudioArguments = @('-c:a', 'pcm_s16le') MuxerArguments = @() } Mp3 = [ordered]@{ Extension = 'mp3' AudioArguments = @( '-c:a', 'libmp3lame', '-b:a', ("{0}k" -f $BitrateKbps), '-joint_stereo', '1' ) MuxerArguments = @('-id3v2_version', '3') } } $selected = $formatMap[$TargetFormat] $audioArguments = @($selected.AudioArguments) if ($PSBoundParameters.ContainsKey('SampleRate')) { $audioArguments += @('-ar', $SampleRate.ToString()) } return [PSCustomObject]@{ TargetFormat = $TargetFormat Extension = $selected.Extension AudioArguments = $audioArguments MuxerArguments = @($selected.MuxerArguments) } } |