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 画像に保存したいと考えています。これは機能しません。解決策はありますか?

4

2 に答える 2

0

INPUT_PATHディレクトリではなく、ビデオ ファイルである必要があります。出力画像を反復処理する代わりに、入力ビデオを反復処理する必要があります。ffmpeg は、すべての画像を単独で出力します (画像を繰り返し処理する必要はありません。つまり、1 つのコマンドで行います)。ヘルプについては、このガイドを参照してください。そのガイドの例を次に示します。

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

つまり、スクリプトで実際に行っていることは、出力画像の名前の桁数をどんどん増やしているということです。

%05.png画像ファイル名は「00001.png」のように%03.pngなり、「001.png」のようになります。

ただし、必要なのは入力ファイルを調べることなので、たとえば「video1.mp4」、「video2.mp4」などを繰り返します。

于 2012-08-01T15:20:59.683 に答える
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
于 2012-08-01T15:54:44.383 に答える