串流影片,就是將原始影片切分成多個小影片 *.ts,然後將多個小影片寫在一個清單檔案 *.m3u8檔案
當你辛苦下載了每個 .ts 影片,想要合併所有檔案,以便管理,可以使用ffmpeg來處理。
合併所有 .ts 檔案之後,要再轉換成普遍的mp4格式,也還是使用ffmpeg 來處理。
紅字部分,請自行評估環境修改
# 要讓產生的字串帶有雙引號括起來,是因為路徑有可能包含空白 # 如果不用雙引號括起來,後面程式會發生錯誤 $ffmpeg = """C:\Users\User\Desktop\ffmpeg-4.1.4-win64-static\bin\ffmpeg.exe""" # 目錄不要用中文,ffmpeg 會不認得 $Root = "D:\[tts 影片存放的目錄路徑]" If(Test-Path -Path "$Root\list.txt"){ Remove-Item -Path "$Root\list.txt" } # 輸出檔案格式一定要是 utf8 (with no BOM),不然 ffmpeg 會找不到檔案 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 參數 $CombineArgu = "-f concat -safe 0 -i ""{0}\list.txt"" -c copy ""{0}\Combine.ts""" -f $Root Write-Host "$ffmpeg $CombineArgu" -ForegroundColor Red Start-Process -FilePath $ffmpeg -ArgumentList $CombineArgu -Wait -WindowStyle Normal -WorkingDirectory $Root Write-Host "Convert Files.... Please Wait" $ConvertArgu = "-i ""{0}\Combine.ts"" -acodec copy -vcodec copy ""{0}\Combine.mp4""" -f $Root Write-Host "$ffmpeg $ConvertArgu" -ForegroundColor Red Start-Process -FilePath $ffmpeg -ArgumentList $ConvertArgu -Wait -WindowStyle Hidden -WorkingDirectory $Root |
0 意見:
張貼留言