ffmpeg를 사용하여 * .avi 파일을 일괄 변환


13

ffmpeg를 사용하여 20 + .avi 파일을 일괄 적으로 변환하려고합니다.

나는 다음을 가지고있다.

@echo off.

for file in *.avi
do
   ffmpeg -i "$file" -s 640x480 -vcodec msmpeg4v2 "'basename "$file" .avi'.mpg';
done

내 .bat 파일에 있지만 작동하지 않습니다. Windows OS에서 어떻게 작동하게 할 수 있습니까? 예, 모든 파일이 같은 폴더에 있습니다.

내가 얻는 오류 메시지 :

현재 파일이 예기치 않았습니다


그리고 정확히 작동하지 않는 것은 무엇입니까?
slhck

cmd가 매우 빨리 사라지기 때문에 오류 메시지를 얻는 방법을 알려 주면 문제가있는 것을 알려줄 수 있습니다.
다리우스

( 시작»실행…»cmd ) 전에 명령 창을 연 다음 거기서 전체 경로를 사용하여 배치 파일을 실행할 수 있습니다. 실제로 비디오로 무엇을하고 싶습니까? 이것들은 어떤 종류의 비디오입니까? MPG 컨테이너로 옮겨야합니까? 아니면 크기를 조정해야합니까? 아니면 특별히 msmpeg4v2코덱이 필요 합니까?
slhck

파일은 DVR에서 가져와 1GB 5 분 이상의 클립입니다. 예. DVR 소프트웨어는 압축시 한심합니다. 이 코덱은 1GB 파일을 대략 7MB 파일로 가져와 관리하기 쉽기 때문에 작동합니다. 그리고 해당 배치를 실행하려고 할 때 "현재 파일이 예기치 않았습니다"라는 메시지가 나타납니다.
다리우스

내가 참조. 비디오 코덱과 컨테이너가 마음에 들지 않으면 x264를 대신 인코더로 사용하여 MPEG-4보다 품질이 훨씬 좋습니다. 이 명령은 ffmpeg -i input.avi -c:v libx264 -crf 23 -s 640x480 output.mp4CRF 값이 품질을 설정하는 위치 와 비슷 합니다 (19에서 24 사이의 제정 값은 적을수록 좋습니다. 참조 : 변환 된 비디오는 작은 크기를 가지고나는 .mov 파일의 크기를 줄이기 위해보고해야 어떤 매개 변수?
slhck

답변:


26

배치 파일이 Windows bat 스크립트에 올바른 형식이 아닙니다. 대신 스크립트가 Linux 용으로 작성된 것 같습니다. Windows Shell에서 지원 하는 for 루프 를 사용하려면 스크립트를 변경해야합니다 .

다음은 Windows for 루프를 사용하여이 작업을 수행하는 방법의 예입니다. 아래 줄을 배치 파일에 넣고 스크립트를 avi 파일과 동일한 디렉토리로 이동 한 다음 실행하십시오.

for %%A IN (*.avi) DO ffmpeg -i "%%A" "%%A.mpg"

이것으로 내가 얻는[NULL @ 000000000037e360] Unable to find a suitable output format for 'outputfile.avi.mpg;' outputfile.avi.mpg:: Invalid argument
다리우스

1
줄 끝에서 세미콜론을 제거해야합니다
Brett
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.