Public/System/Join-Video.ps1
function Join-Video { [CmdletBinding()] [CmdLetTag()] param ( [parameter(ValueFromPipeline)] [System.IO.FileInfo]$Video, [parameter()] [string]$OutputFile="output.mp4" ) begin { $PSCmdlet|Write-PSCmdLetBegin if (!(Get-Chocopackage ffmpeg)){ Install-ChocoPackage ffmpeg } $files=@() } process { Push-Location $Video.DirectoryName $transCode="$($Video.BaseName).ts" Remove-Item $transCode -Force -ErrorAction SilentlyContinue $files+=$transCode Invoke-Script{ ffmpeg -i $Video.Name -c copy -bsf:v h264_mp4toannexb -f mpegts $transCode } Pop-Location } end { Remove-Item $OutputFile -ErrorAction SilentlyContinue Invoke-Script{ ffmpeg -i "concat:$(($files|Join-String -Separator '|'))" -c copy -bsf:a aac_adtstoasc $OutputFile } $files|Remove-Item } } |