나는 이름과 확장자가 다른 많은 비디오를 가지고 있습니다(일부 mp4, 일부 wmv 등).
특정 디렉터리의 모든 비디오에 대해 아래 명령을 실행한 다음 원본 파일을 덮어쓰지 않고 다른 디렉터리에 저장하고 싶습니다.
일부 동영상은 반복될 수 있으며, 이런 일이 발생하면 스크립트를 일시 중지해야 합니다. 예를 들어 video1.mp4
& video1.avi
둘 다 video1.mp4일 수 없으므로 /home/videos/processed
스크립트가 일시 중지되어야 합니다.
ffmpeg -i '/home/videos/unprocessed/vidabc.mp4' -f mp4 -vcodec libx264 -preset fast -profile:v main -acodec aac -movflags +faststart '/home/videos/processed/vidabc.mp4'
ffmpeg -i '/home/videos/unprocessed/vidxyz.mp4' -f mp4 -vcodec libx264 -preset fast -profile:v main -acodec aac -movflags +faststart '/home/videos/processed/vidxyz.mp4'
답변1
find
플래그와 함께 명령을 사용하여 디렉토리의 각 파일을 처리할 수 있습니다 -execdir
.
예:
find /home/videos/unprocessed -type f \
-execdir ffmpeg -i '{}' -f mp4 -vcodec libx264 -preset fast \
-profile:v main -acodec aac -movflags +faststart '/home/videos/processed/{}.mp4' \;
-type f
디렉터리가 아닌 파일만 찾으려는 것을 나타냅니다.
플래그 다음에 -execdir
는 '{}'
이를 파일 경로로 바꿉니다 ./vidabc.mp4
.
명령을 종료하려면 명령 끝에 -execdir
a를 포함하십시오 .\;
이 예에서 생성된 파일 이름은 다음과 같습니다.
/home/videos/processed/vidabc.mp4.mp4
/home/videos/processed/vidxyz.avi.mp4
/home/videos/processed/vidxyz.mp4.mp4
이것이 문제인 경우 이를 해결할 수 있는 몇 가지 방법이 있습니다. 바라보다명령 "find"-exec 대체 문자열비슷한 예를 들어보세요.