ffmpeg-normalize를 사용하여 100개의 mp4 비디오 파일의 볼륨을 정규화하고 싶습니다.

ffmpeg-normalize를 사용하여 100개의 mp4 비디오 파일의 볼륨을 정규화하고 싶습니다.

ffmpeg-normalize를 사용하여 100개의 mp4 비디오 파일의 볼륨을 정규화하고 싶습니다. 프로그램이 적절한 수준을 결정하기 위해 모든 항목을 실행하는 방법이 있습니까? 아니면 하나의 파일을 입력으로 제공해야 합니까? 100개의 파일 이름을 나열하지 않고 전체 폴더를 변환할 수 있습니까? ffmpeg-normalize *.mp4를 사용해 보았지만(명령줄 프롬프트가 비디오 디렉터리에 있는 동안) "파일 *.mp4가 존재하지 않습니다"라는 오류가 발생했습니다. Windows 시스템에서 ffmpeg를 사용하고 있지만 nVidia Shield의 KODI 플레이어를 통해 파일을 재생합니다. 볼륨이 크게 흔들리지 않고 동영상을 재생할 수 있기를 원합니다.

답변1

ffmpeg-normalize도구는 여러 파일을 입력으로 사용할 수 있습니다. 와일드카드는 *.mp4Linux에만 해당됩니다. Windows에서는 READMEffmpeg-normalize 에 설명된 대로 간단한 루프를 사용할 수 있습니다 .

for %%f in ("*.mp4") do ffmpeg-normalize "%%f" -c:a aac -b:a 192k -ext mp4

그러면 확장명과 AAC 인코딩(정규화된) 오디오 스트림이 normalized포함된 출력 파일이 폴더에 생성됩니다 .mp4

기본 설정은 지정된 대상 볼륨으로 EBU R 128 음량 정규화를 사용하므로 여러 파일을 "정렬"하는 것에 대해 걱정할 필요가 없습니다. 그냥 그들 모두에게 실행하십시오.

사용법에 대한 질문이 있는 경우 먼저 README를 읽어보세요. 그렇지 않으면 GitHub에 문제를 게시하세요.

답변2

저는 여기서 제가 제작한 것과 같은 Windows 솔루션을 본 적이 있는데, 몇 년 전에 다른 사람이 만든 것입니다. 하지만 그것이 무엇인지도 모르고, 어디서 구할 수 있는지도 모르겠습니다. 또한 AVI 파일에만 해당되는 것 같습니다. 나는 MP4를 처리하기 위해 처음부터 내 자신의 글을 작성했습니다. 이 사이트가 제가 이 지점에 도달하는 데 많은 도움이 되었기 때문에 관심 있는 모든 사람과 이 내용을 공유하고 싶습니다.

Windows 10에서 여러 개의 *mp4 파일(예, 이름에 공백 포함)을 가져오고 mp3gain을 사용하여 볼륨을 정규화할 수 있는 DOS 배치 스크립트를 작성했습니다. (MP4GAIN을 시도했지만 평가판 기간은 약 1시간 만에 종료되었습니다.) 이것은 MP4GAIN보다 훨씬 빠르게 처리될 것이라는 것을 알았습니다. 내가 이렇게 하는 이유는 모든 단계에서 ffmpeg 및 mp3gain을 구체적으로 제어할 수 있고 mp4gain 또는 ffmpeg-normalize가 할 수 없는 작업을 수행할 수 있기 때문입니다.

어쨌든, 그것은 완벽하지도 않고 최적화되지도 않았습니다. 오히려 누군가가 자신의 목적에 맞게 조정/조정할 수 있는 발판이 될 수 있습니다. 나는 오디오를 mp3 VBR로 추출하고 mp3gain이 그것에 마법을 걸도록 한 다음 다시 넣습니다. 5개의 동시 정규화를 처리할 수 있지만 한 번에 더 많은 작업을 시도하려는 경우 사용 가능한 하드 디스크 공간에 따라 달라질 수 있습니다.

폴더 만들기 - C:\Vids는 어디에나 있을 수 있지만 내부에는 원본, 작업 및 완료된 폴더가 있습니다.

C:\Vids
C:\Vids\original
C:\Vids\working
C:\Vids\completed

최신 버전을 다운로드하세요. 제가 확인한 바에 따르면 2020년 9월 1일 현재 무료입니다. 나는 다음을 사용하고 있습니다 :

C:\Vids\ffmpeg.exe  ( ffmpeg version git-2020-08-28-ccc7120 )
C:\Vids\mp3gain.exe ( mp3gain version 1.4.6 )

a를 만들고 C:\Vids\normalize.bat거기에 이것을 넣으십시오 :

echo off
setlocal enableextensions enabledelayedexpansion

for %%I in (original\*.mp4) DO (

  echo Creating working\%%~nI.bat
  echo echo off > "working\%%~nI.bat"
  echo echo Unpacking audio and video from %%I . >> "working\%%~nI.bat"
  echo echo ..\ffmpeg.exe -v 0 -i "..\%%I" -q:a 0 -map a ".\%%~nI_audio_only.mp3" -vcodec copy -map 0:v ".\%%~nI_video_only.mp4" >> "working\%%~nI.bat"
  echo ..\ffmpeg.exe -v 0 -i "..\%%I" -q:a 0 -map a ".\%%~nI_audio_only.mp3" -vcodec copy -map 0:v ".\%%~nI_video_only.mp4" >> "working\%%~nI.bat"
  echo echo . >> "working\%%~nI.bat"
  echo echo Normalizing extracted audio with Mp3Gain. >> "working\%%~nI.bat"
  echo echo ..\mp3gain.exe ".\%%~nI_audio_only.mp3" >> "working\%%~nI.bat"
  echo ..\mp3gain.exe ".\%%~nI_audio_only.mp3" >> "working\%%~nI.bat"
  echo echo Reconstructing normalized video from component parts. >> "working\%%~nI.bat"
  echo echo .\ffmpeg.exe -v 0 -i ".\%%~nI_video_only.mp4" -i ".\%%~nI_audio_only.mp3" -codec copy "..\completed\%%~nI%%~xI" >> "working\%%~nI.bat"
  echo ..\ffmpeg.exe -v 0 -i ".\%%~nI_video_only.mp4" -i ".\%%~nI_audio_only.mp3" -codec copy "..\completed\%%~nI%%~xI" >> "working\%%~nI.bat"
  echo echo Post-process clean up. >> "working\%%~nI.bat"
  echo del ".\%%~nI_audio_only.mp3" >> "working\%%~nI.bat"
  echo del ".\%%~nI_video_only.mp4" >> "working\%%~nI.bat"
  echo echo Done. >> "working\%%~nI.bat"
  echo echo on >> "working\%%~nI.bat"
  
)
pause
echo on

원본 mp4를 C:\Vids\original폴더에 넣고 Normalize.bat를 실행하세요. cmd.exe DOS 프롬프트에서 수행하지만 Windows 탐색기에서도 배치 파일을 두 번 클릭할 수 있습니다. mp4의 원본 폴더를 검색하고 C:\Vids\working. C:\Vids\working한 번 에 하나, 둘 또는 네 개의 배치 파일을 시작할 수 있습니다 .

각 원본 mp4는 오디오가 없는 mp4와 비디오가 없는 mp3 VBR로 압축 해제됩니다.
비디오와 오디오 추출은 동시에 수행되므로 비디오나 오디오가 다른 파일보다 짧아지지 않고 나중에 다시 병합할 수 있는 두 개의 파일이 생성될 것으로 생각됩니다. 비디오 및 오디오 추출은 C:\Vids\working.

그런 다음 추출된 mp3에 대해 mp3gain.exe가 실행되고 오디오 및 비디오 스트림이 ffmpeg와 다시 병합되어 폴더에 배치됩니다 C:\Vids\completed.

압축이 풀린 임시 mp4 및 mp3는 프로세스가 완료되면 삭제됩니다.

=======

제한사항:

mp4의 파일 이름에는 특정 특수 문자(예: ! 또는 ♫)를 포함할 수 없지만 공백( ) [ ] # ' @ - _와 같은 문자는 허용됩니다. 생성된 스크립트가 실패하거나 너무 빨리 종료되어 비디오 파일을 처리하지 못하는 경우 원본 파일의 이름을 바꿔보세요.

내장된 오디오가 이미 mp3인지 확인하기 위해 ffprobe를 확인할 수 없으며 모든 aac 오디오가 aacgain.exe로 정규화될 수 있는 것은 아니라는 사실을 발견했습니다. 따라서 나는 모든 것이 최고 품질의 mp3 VBR로 나오도록 강제합니다. 원본 오디오의 품질이 충분하다면 이렇게 해도 괜찮습니다.

요구

사람들이 이 스크립트를 더욱 확장하여 다양한 오디오 유형을 인식하고 이미 mp3인 경우 오디오 사본을 만들 수 있다면 도움이 될 것입니다. 또는 AAC 오디오를 mp3로 변환하거나 AAC로 그대로 두어야 한다는 것을 인식하세요.

다른 비디오 파일 형식(Avi, mkv, wmv 등)을 처리하도록 만듭니다.

각 단계 후에 실패가 발생했는지 확인하고 스크립트를 종료하고, 재추출이 발생하지 않도록 재개 기능을 허용합니다.

활성화하려면 플래그를 추가하세요.압축libx264 -crf 18 -preset Veryslow를 사용하여 비디오 파일을 저장하면 공간을 절약할 수 있지만 이렇게 하면 실행 속도가 매우 느려집니다.

당신이 생각할 수 있는 다른 개선 사항.

감사해요.

~룸

관련 정보