一條線解決方案

一條線解決方案

我是 FFmpeg 的新手,正在嘗試解決這個問題。我找到這個是為了批量處理這個答案是視訊旋轉但我需要把它們放在一起。

有人可以解釋一下如何在 Windows 上為此操作建立腳本嗎?

答案1

基本上,您只需要查找檔案(將它們儲存在變數中),然後將這些查找到的檔案輸入 FFmpeg。

當然,Windows 的批次語言就足夠了。但由於我對此的熟練程度為零,這裡有一個 PowerShell 腳本:

# Searching for files with the Get-ChildItem cmdlet and saving their relevant properties in an array:
# NOTE: -File will only work with PowerShell-versions >= 3.
[array]$FilesToRotate = Get-ChildItem -Path "C:\PATH_TO_FILES" ((-Filter *.mp4)) ((-Recurse)) -File | ForEach-Object {
    # NOTE: This part is a bit tricky - I just added it so I'm able to save the parent-path of each file in an object.
    # NOTE: One could also omit the whole ForEach-Object and use the Split-Path cmdlet inside the output-file's specification in FFmpeg's code.
    [PSCustomObject]@{
        InFullName = $_.FullName
        # Will put the output-file in the same folder as the input-file and add "_ROTATION" as suffix in its name.
        OutFullName = "$(Split-Path -Parent -Path $($_.FullName))\$($_.BaseName)_ROTATE$($_.Extension)"
    }
}

# Processing the files with FFmpeg using PowerShell's Start-Process cmdlet:
for($i=0; $i -lt $FilesToRotate.Length; $i++){
    Start-Process -FilePath "C:\PATH_TO_FFMPEG\ffmpeg.exe" -Argumentlist " -i `"$($FilesToRotate[$i].InFullName)`" -c copy -metadata:s:v:0 rotate=<x> `"$($FilesToRotate[$i].OutFullName )`" " ((-Wait)) ((-NoNewWindow))
}

該腳本將運行 FFmpeg您提供的代碼(我沒有檢查它,但您無論如何都可以輕鬆替換它)並將生成的文件保存到名稱後綴為“_ROTATE”的同一資料夾中 - 因此“MyMovie2017.mov”將變為“MyMovie2017_ROTATE.mov”。 (如果您想將它們渲染到一個全新的資料夾,請替換$($FilesToRotate[$i].ParentPath)為您喜歡的路徑。)

注意:雙括號中的內容(( ))是可選的:

  • -Filter將僅尋址(一種)特定類型的文件,例如 *.mp4 將僅查找 MP4 文件。如果您有不只一種文件類型,但許多文件不需要轉換(例如文字檔),您可以選擇-Exclude您不想轉換的所有格式,也可以-Include只轉換那些應該轉換的格式(-Include就像-Filter- 它速度較慢,但可以包含多種格式。
  • -Recurse還將查看子資料夾。您也可以-Depth與 PowerShell v 5+ 一起使用。
  • -Wait將一次打開一個 ffmpeg 實例 - 沒有它,所有實例將並行打開。
  • -NoNewWindow將在 PowerShell 控制台上顯示 ffmpeg 實例的輸出,如果沒有它,ffmpeg 的每個實例都會在新的控制台視窗中開啟。僅有意義-Wait

在啟動腳本之前,您必須刪除所有雙括號(如果不需要,也可以刪除它們的內容)。

此外,還需要調整以下內容:

  • C:\PATH_TO_FILES顯然,你的文件的路徑。
  • C:\PATH_TO_FFMPEG\ffmpeg.exe顯然,你的 ffmpeg.exe 的路徑。
  • rotate=<x>- 您需要將 替換<x>90, 180, 或270。 (如程式碼來源中所解釋的)

如果有什麼需要更多解釋,我很樂意提供協助。

答案2

一條線解決方案

npx rotate-video --source=source_path --destination=destination_path --extension=MP4 --angel=270

筆記:你需要安裝FFMPEG先安裝 CLI安裝

相關內容