答え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
サブフォルダーも検索します。PowerShell-Depth
v 5+ でも使用できます。-Wait
一度に 1 つの ffmpeg インスタンスが開きます。これがない場合は、すべてのインスタンスが並行して開かれます。-NoNewWindow
は、ffmpeg インスタンスの出力を PowerShell コンソールに表示します。これがない場合は、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をインストールする必要がありますインストール