2012-08-01 167 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 

我想用此代碼將1秒的視頻保存爲jpg圖像。這沒有用。任何解決方案FFMPEG視頻圖像批量轉換

+1

當你嘗試它時會發生什麼? – Hassan 2012-08-01 15:12:31

+3

定義'不起作用' – LittleBobbyTables 2012-08-01 15:13:21

回答

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

@Adey ffmpeg只會讀取視頻文件,而不會寫入任何內容。至於輸出文件,由於它們將被生成,所以沒有文件名來保存。您指定文件名應該是什麼。 – Hassan 2012-08-01 15:30:37

+0

@Adey啊,我明白你的意思了。既然你已經有了輸入文件名(你必須讓它使用命令),你也可以在輸出名稱中使用它,例如'%input_file %% 05.jpg'之類的東西。另外,您使用jpegs的任何特定原因?我會使用tga文件來保留視頻的質量。 – Hassan 2012-08-01 15:35:52

+0

@Adey我不知道。我甚至不知道你可以。但是我上面的建議是,你在for循環中逐個遍歷視頻。但也許你可以嘗試像'* .mp4'這樣的東西。 – Hassan 2012-08-01 15:43:48

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