2012-08-01 9 views
1
@echo off 
setlocal enabledelayedexpansion 
set EXE_FILE=E:\ffmpeg.exe 
set INPUT_PATH=C:\folder\ 
set OUTPUT_PATH=C:\Images\ 
set COUNT=0 
for %%F in (*) do %EXE_FILE% -i %INPUT_PATH% %OUTPUT_PATH%/%%F.jpg 
popd 

이 코드를 사용하여 jpg 이미지에 1 초 비디오를 저장하고 싶습니다. 이 doesnt 일. 어떤 해결책?FFMPEG 비디오 일괄 변환

+1

당신은 무엇을하려고 발생하면? – Hassan

+3

'작동하지 않습니다. ' – LittleBobbyTables

답변

0

INPUT_PATH은 디렉토리가 아닌 비디오 파일이어야합니다. 출력 이미지를 반복하는 대신 입력 비디오를 반복해야합니다. ffmpeg는 모든 이미지를 단독으로 출력합니다 (단 한 번의 명령으로 반복하지 않아도됩니다). 도움을 받으려면 this guide을보십시오.

ffmpeg -i video.mpg -r 1 -f image2 ffmpeg_temp/%05d.png 

그래서 당신이 정말로 스크립트에서 무슨 일을하는지 당신은 출력 이미지를 더욱 더의 이름으로 자릿수를하고 있습니다입니다 : 여기에 그 가이드의 예입니다.

%05.png 이미지 파일 이름은 "00001.png"처럼 보이게되며, %03.png 등 "001.png"모양을

그러나 당신이 원하는 것은 입력 파일을 통과, 그래서를 통해 반복하는 것입니다 등 예 "video1.mp4", "video2.mp4"에 대한

+0

@Afy ffmpeg는 비디오 파일 만 읽으며 아무 것도 쓰지 않습니다. 출력 파일은 생성 될 것이므로 보존 할 파일 이름이 없습니다. 파일 이름을 지정하십시오. – Hassan

+0

@Adey Ahh, 방금 당신이 의미하는 바를 얻었습니다. 이미 입력 파일 이름을 가지고 있기 때문에 (명령을 사용하기 위해 파일 이름을 사용해야 만합니다.) 출력 이름에도'% input_file %% 05.jpg '와 같은 이름을 사용할 수 있습니다. 또한 jpeg를 사용하는 특별한 이유가 있습니까? 대신 비디오의 품질을 유지하기 위해 tga 파일을 사용합니다. – Hassan

+0

@Adey 잘 모르겠습니다. 나는 너를 할 수 있다는 것도 모른다. 그러나 위의 제안은 for 루프에서 동영상을 하나씩 반복하는 것이 었습니다. 하지만 아마도'* .mp4 '와 같은 것을 시도 할 수 있습니다. – Hassan

0
IF EXIST %~d1%~p1%~n1.jpg GOTO exit 
setlocal enabledelayedexpansion 
set EXE_FILE=E:\ffmpeg.exe 
set OUTPUT_PATH=E:\Glasgow\Test 
set COUNT=0 
for %%F in (*.avi) do %EXE_FILE% -i %~d1%~p1%~n1.avi -r 1 -vframes 1 -ss 00:00:01 -f image2 -y %~d1%~p1%~n1.jpeg 
popd