使用 PowerShell 呼叫 ffmpeg,將多個 .ts 檔案合併,並轉換成 mp4 影片
# 自行指定 ffmpeg.exe 的完整路徑
$ffmpeg = """C:\Program Files\ffmpeg\bin\ffmpeg.exe"""
# 指定 .ts 影片路徑,請不要使用中文,ffmpeg 會不認得
$Root = "d:\tmp\Demon Slayer_0001"
# 如果清單檔案存在,就刪除現有清單檔案
If(Test-Path -Path "$Root\list.txt"){
Remove-Item -Path "$Root\list.txt"
}
# 讀取 *.ts 檔案,排序,將檔案名稱輸出到清單檔案
Get-ChildItem -Path $Root -Filter *.ts | Sort-Object -Property Name | ForEach{
"file '$Root\$_'" | Out-File -FilePath "$Root\list.txt" -Append -Encoding oem
}
Write-Host "Combine Files.... Please Wait"
# 清單檔案包含路徑,所以要加上 -safe 0 參數;避免路徑中有空白字元,所以路徑檔名要有雙引號
$ArgumentList = "-f concat -safe 0 -i ""{0}\list.txt"" -c copy ""{0}\Combine.ts""" -f $Root
Write-Host "$ffmpeg $ArgumentList" -ForegroundColor Red
Start-Process -FilePath $ffmpeg -ArgumentList $ArgumentList -Wait -WindowStyle Hidden -WorkingDirectory $Root
Write-Host "Convert Files.... Please Wait"
$ArgumentList = "-i ""{0}\Combine.ts"" -acodec copy -vcodec copy ""{0}\Combine.mp4""" -f $Root
Write-Host "$ffmpeg $ArgumentList" -ForegroundColor Red
Start-Process -FilePath $ffmpeg -ArgumentList $ArgumentList -Wait -WindowStyle Hidden -WorkingDirectory $Root
0 意見:
張貼留言