원라인 솔루션

원라인 솔루션

저는 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: - it 속도는 느리지만 두 개 이상의 형식을 포함할 수 있습니다.)
  • -Recurse하위 폴더도 살펴보겠습니다. -DepthPowerShell v 5+에서도 사용할 수 있습니다 .
  • -Wait한 번에 하나의 ffmpeg-instance를 엽니다. 이것이 없으면 모든 인스턴스가 병렬로 열립니다.
  • -NoNewWindowPowerShell 콘솔에 ffmpeg-instance의 출력이 표시되지만, 그것이 없으면 ffmpeg의 모든 인스턴스가 새 콘솔 창에서 열립니다. 에서만 의미가 있습니다 -Wait.

스크립트를 시작하기 전에 모든 이중 괄호(원하지 않는 경우 그 내용)를 삭제해야 합니다.

또한 다음 사항을 조정해야 합니다.

  • C:\PATH_TO_FILES분명히 파일 경로입니다.
  • C:\PATH_TO_FFMPEG\ffmpeg.exe분명히 ffmpeg.exe의 경로입니다.
  • rotate=<x>- 을 , 또는 <x>으로 바꿔야 합니다 . (코드 소스에 설명되어 있음)90180270

추가 설명이 필요한 경우 기꺼이 도와드리겠습니다.

답변2

원라인 솔루션

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

메모:FFMPEG먼저 CLI를 설치해야 합니다설치하다

관련 정보