Hi
folgendes Script erzeugt ein Jpg mit 9 Vorschaubildern eines Videos:
autoit.de/wcf/attachment/4314/
Dazu benötigt man ffmpeg.exe:
http://www.videohelp.com/download/ffmpeg-0.5.7z
Das Script kompilieren und dann via drag´n´drop ein/mehrere Videodateien auf die Exe ziehen...
Spoiler anzeigen
#include <WindowsConstants.au3>
#include <Misc.au3>
_Singleton("ffmpeg thumbnail generator")
#include <Date.au3>
#include <GdiPlus.au3>
If $Cmdline[0] < 1 Then Exit
$hGui = GUICreate("ffmpeg thumb generator", 150, 55, -1, -1, -1, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
$hProgress1 = GUICtrlCreateProgress(5, 5, 140, 20, 0x1)
$hProgress2 = GUICtrlCreateProgress(5, 30, 140, 20, 0x1)
GUISetState()
_GDIPlus_Startup()
For $i = 1 To $Cmdline[0]
DirRemove(@ScriptDir & "\ffmpegthumbtemp", 1)
DirCreate(@ScriptDir & "\ffmpegthumbtemp")
$sMovieFile = $Cmdline[$i]
$iTicks = _CheckMovieLength($sMovieFile)
If $iTicks = 0 Then $iTicks = 20000
GUICtrlSetData($hProgress1, $i * 100 / $Cmdline[0])
_CreateThumbnails($sMovieFile, $iTicks)
Next
DirRemove(@ScriptDir & "\ffmpegthumbtemp", 1)
_GDIPlus_Shutdown()
Func _CreateThumbnails($sMovieFile, $iTicks)
Local $tempGraph = _GDIPlus_GraphicsCreateFromHWND(_WinAPI_GetDesktopWindow())
Local $hBitmap = _GDIPlus_BitmapCreateFromGraphics(520, 400, $tempGraph)
_GDIPlus_GraphicsDispose($tempGraph)
Local $hGraphics = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsClear($hGraphics, 0xFFFFFFFF)
Local $h, $m, $s, $hImage, $iCnt = 0
_TicksToTime($iTicks, $h, $m, $s)
For $i = 0 To 2
For $j = 0 To 2
$iCnt += 1
_TicksToTime(($iCnt * 10 * $iTicks) / 100, $h, $m, $s)
GUICtrlSetData($hProgress2, $iCnt * 100 / 9)
RunWait('"' & @ScriptDir & '\ffmpeg.exe" -ss ' & $h & ':' & $m & ':' & $s & ' -vframes 1 -i "' & $sMovieFile & '" -s 160×120 -an -r 0.05 -y "' & @ScriptDir & '\ffmpegthumbtemp\' & $iCnt & '%d.jpg"', @ScriptDir, @SW_HIDE)
$hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\ffmpegthumbtemp\" & $iCnt & "1.jpg")
_GDIPlus_GraphicsDrawImage($hGraphics, $hImage, 10 + $i * 170, 10 + $j * 130)
_GDIPlus_ImageDispose($hImage)
Next
Next
_GDIPlus_ImageSaveToFile($hBitmap, StringLeft($sMovieFile, StringInStr($sMovieFile, ".", 0, -1)) & 'jpg')
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_GraphicsDispose($hGraphics)
EndFunc ;==>_CreateThumbnails
Func _CheckMovieLength($sMovieFile)
Local $sFFmpeg = ""
Local $hFFmpeg = Run('ffmpeg.exe -i "' & $sMovieFile & '"', @ScriptDir, @SW_HIDE, 0x4)
While 1
$sFFmpeg &= StderrRead($hFFmpeg)
If @error Then ExitLoop
WEnd
$sFFmpeg = StringLeft(StringTrimLeft($sFFmpeg, StringInStr($sFFmpeg, "Duration:") + 9),
Local $iTicks = _TimeToTicks(StringLeft($sFFmpeg, 2), StringMid($sFFmpeg, 4, 2), StringMid($sFFmpeg, 7, 2))
Return $iTicks
EndFunc ;==>_CheckMovieLength
lgE