MediaPlayerClassic automatisieren zum erstellen von Thumbnails

  • Hallo zusammen,
    bisher verwende ich ImageGrabber.NET II um von diversen Video mir Thumbnails zu erstellen. Dies erstellt nicht nur pro Szene ein Bild, sondern man hat z.B. ein JPG-File mit 6x5 kleinen Bilder. Diese Programm hat einen Batch-Betrieb, so das man einfach mehrere Videos/Verzeichnis "generieren" kann. Leider jedoch hat diese Programm mit etlichen FLV-Dateien von YouTube Probleme und stürzt ab.

    Als Alternative hierzu gibt es den MediaPlayerClassic http://sourceforge.net/project/showfiles.php?group_id=170561 welcher ebenfalls von einem Video Thubmails erstellen kann. Leider jedoch keine Batch Möglichkeit, bzw. mir nicht bekannt.

    Mit dem Autoit-Skriptrekorder habe ich mir ein kleines Skript erstellt welches von einer Datei diese Thumbnails erstellt. Ein weiteres Skript welches rekursiv durch bestimmte Verzeichnisse durchgeht und diverse Dateien öffnet ist auch nicht das Problem. Probleme habe ich jedoch bei MediaPlayerClassic zu erkennen wann er fertig ist mit der Generierung der Thumbnail-Datei. Es kommt kein Dialog zum Schluss.

    Hat da jemand eine Idee/Rat für mich?

    Grüße
    Kai


    Anbei mal das aufgenomme Skript für ein Videofile:

    [autoit]


    Opt("WinWaitDelay",100)
    Opt("WinTitleMatchMode",4)
    Opt("WinDetectHiddenText",1)
    Opt("MouseCoordMode",0)
    WinWait("Total Commander 6.52 - NICHT REGISTRIERT","")
    If Not WinActive("Total Commander 6.52 - NICHT REGISTRIERT","") Then WinActivate("Total Commander 6.52 - NICHT REGISTRIERT","")
    WinWaitActive("Total Commander 6.52 - NICHT REGISTRIERT","")
    Send("mplayerc.exe{SPACE}1.flv{ENTER}")
    WinWait("Total Commander","")
    If Not WinActive("Total Commander","") Then WinActivate("Total Commander","")
    WinWaitActive("Total Commander","")
    Send("{ENTER}")
    WinWait("1.flv - Media Player Classic Homecinema - v1.1.604.0","")
    If Not WinActive("1.flv - Media Player Classic Homecinema - v1.1.604.0","") Then WinActivate("1.flv - Media Player Classic Homecinema - v1.1.604.0","")
    WinWaitActive("1.flv - Media Player Classic Homecinema - v1.1.604.0","")
    Send("{ALTDOWN}f{ALTUP}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{ENTER}")
    WinWait("Speichern unter","")
    If Not WinActive("Speichern unter","") Then WinActivate("Speichern unter","")
    WinWaitActive("Speichern unter","")
    Send("1.flv.jpg{LEFT}{LEFT}{LEFT}{LEFT}2{ENTER}")
    WinWait("1.flv - Media Player Classic Homecinema - v1.1.604.0","")
    If Not WinActive("1.flv - Media Player Classic Homecinema - v1.1.604.0","") Then WinActivate("1.flv - Media Player Classic Homecinema - v1.1.604.0","")
    WinWaitActive("1.flv - Media Player Classic Homecinema - v1.1.604.0","")
    Send("{ALTDOWN}f{ALTUP}{UP}{ENTER}")

    [/autoit]

    2 Mal editiert, zuletzt von kaipron (23. Juli 2008 um 14:51)

  • Hi Kaipron,

    also ich weiß nich ob ich dir damit irgendwie helfe, aber ich schreib jetzt einfach mal hin was mir so spontan einfällt.
    Vllt bringts dir ja was vllt auch nicht.
    Ich kenn zwar dein MediaPlayerClassic nicht, aber du könntest evtl:

    - schauen ob der Prozess des Erstellens noch aktiv ist, oder ob er noch läuft oder so...
    - ich vermute mal irgendetwas in der GUI muss ich ja ändern wenn er durchgelaufen ist.
    Du könntest versuchen auf diesen Text zu warten. (irgendein OK oder so)
    - oder du schaust nach ob dein Thumbnail erstellt wurde...

    Des wären mal so spontan meine Ideen.
    Keine Ahnung obs dir was bringt^^

    mfg
    Ben


  • - oder du schaust nach ob dein Thumbnail erstellt wurde...

    Hi,
    danke dir für den Tip mit der Datei. Hab dies mal in mein Skript eingebaut.

    Hier mal mein komplettes erstes Skript als Anfäger *g*, falls es auch jemand mal gebrauchen kann:

    [autoit]


    #Include <File.au3>
    #Include <Array.au3>
    #Include <_GetFilesFolder_Rekursiv.au3>

    [/autoit][autoit][/autoit][autoit]

    local $zaehler_thumbs = 0
    local $zaehler_skip = 0

    [/autoit][autoit][/autoit][autoit]

    Func _CreateThumbnail($videofile)
    Opt("WinWaitDelay",100)
    Opt("WinTitleMatchMode",4)
    Opt("WinDetectHiddenText",1)
    Opt("MouseCoordMode",0)

    If (StringInStr($videofile, ".jpg")) Then
    Return 0
    EndIf

    [/autoit][autoit][/autoit][autoit]

    $thumbnailname = $videofile & ".jpg"

    [/autoit][autoit][/autoit][autoit]

    If (FileExists($thumbnailname) == 0) Then
    run('D:\AutoIt\mplayerc.exe "' & $videofile & '"')

    [/autoit][autoit][/autoit][autoit]

    WinWait("Media Player Classic Homecinema","avg: 0 ms, dev: 0 ms")
    If Not WinActive("Media Player Classic Homecinema","avg: 0 ms, dev: 0 ms") Then WinActivate("Media Player Classic Homecinema","avg: 0 ms, dev: 0 ms")
    WinWaitActive("Media Player Classic Homecinema","avg: 0 ms, dev: 0 ms")

    [/autoit][autoit][/autoit][autoit]

    Send("{ALTDOWN}f{ALTUP}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{ENTER}")

    [/autoit][autoit][/autoit][autoit]

    WinWait("Speichern unter","Spe&ichern in:")
    If Not WinActive("Speichern unter","Spe&ichern in:") Then WinActivate("Speichern unter","Spe&ichern in:")
    WinWaitActive("Speichern unter","Spe&ichern in:")

    [/autoit][autoit][/autoit][autoit]

    Send($thumbnailname)
    Send("{TAB}{TAB}{SPACE}")

    [/autoit][autoit][/autoit][autoit]

    While (FileExists($thumbnailname) == 0)
    Sleep(1000)
    WEnd

    [/autoit][autoit][/autoit][autoit]

    $zaehler_thumbs = $zaehler_thumbs + 1

    [/autoit][autoit][/autoit][autoit]

    WinWait("Media Player Classic Homecinema","avg: 0 ms, dev: 0 ms")
    If Not WinActive("Media Player Classic Homecinema","avg: 0 ms, dev: 0 ms") Then WinActivate("Media Player Classic Homecinema","avg: 0 ms, dev: 0 ms")
    WinWaitActive("Media Player Classic Homecinema","avg: 0 ms, dev: 0 ms")

    [/autoit][autoit][/autoit][autoit]

    Send("{ALTDOWN}x{ALTUP}")

    Return $thumbnailname
    Else
    $zaehler_skip = $zaehler_skip + 1

    Return 1
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    $path = "d:\Autoit\Videos"
    $files = _GetFilesFolder_Rekursiv($path, "*", 0)

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 to $files[0] - 1
    $temp = $files[$i]

    If StringLen($temp) > 0 and StringInStr($temp, ".jpg") == 0 Then
    _CreateThumbnail($temp)
    EndIf
    Next

    [/autoit][autoit][/autoit][autoit]

    MsgBox(0,"Info", "Thumbnails erstellt: " & $zaehler_thumbs & " | Videos überprungen: " & $zaehler_skip)

    [/autoit]

    Wichtig ist, das ihr in den Optionen von MPC die Titelbar auf "Don't prefix anything" stellt, da ansonsten das Skript das Fenster nicht findet.

    Über Tips & Verbessungsvorschläge würde ich mich sehr freuen :D

    Grüße
    Kai

    Einmal editiert, zuletzt von kaipron (23. Juli 2008 um 14:59)

  • Hallo,

    ich würde gerne dieses script nützen - eigentlich funktioniert es ganz gut ... NUR ... sobald ein Video fertig ist, hört er einfach auf. Das Script rennt zwar noch aber ich kann einfach nicht sehen worauf er noch wartet. Also script beenden - neu starten - video wird erstellt und script hängt wieder.

    könnte mir da bitte mal jemand eine info posten was nicht passt.


    Danke im Voraus.

  • Schau dir doch mal meinen VideoPoster (siehe Sig) an, darin habe ich mit mtn (movie thumbnailer) die previews gemacht. Ist ein einfaches Commmand-Line Tool, also bestens geeiegnet für Batch Jobs.

    MFG

  • leider ist der Beitrag schon über 2 jahre alt.
    Aber genau das gleiche wollte ich auch machen.
    Gibt es so ein Projekt schon?
    Das war das eingize, was die suche ausspuckte.

    Hoffentlich wird es nochmal aufgegriffen.

    EDIT:
    sehe gerade, dass der Beitrag schon gelöst war, aber ich finde diese Include nirgens

    [autoit]

    #Include <_GetFilesFolder_Rekursiv.au3>

    [/autoit]

    oder stelle ich mich gerade nur zu doof an?

    Grüße
    Michael