Ankündigung

Einklappen
Keine Ankündigung bisher.

Mplayer Screenshot-Extraktion ist langsam

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mplayer Screenshot-Extraktion ist langsam

    Kennt sich hier vielleicht jemand mit mplayer aus?
    Ich extrahiere 10 Frames aus einer FLV-Datei. Das Video ist 29 Minuten lang (100MB), und die Extraktion dauert so etwa 4-5 Minuten. Der Nutzer meines Skripts weiss zwar, das gerade Thumbnails erstellt werden. Jedoch sind 5 Minuten bedenklich lang.

    Hier ist mein PHP-Code:
    PHP-Code:
                $cmd $this->mplayer.
                    
    ' -nosound'.
                    
    ' -really-quiet'.
                    
    ' -ss '.self::SKIP.     //skip X seconds
                    
    ' -vo '.escapeshellarg('jpeg:quality='.$quality.':outdir='.$this->outputfolder).
    //                ($endpos ? ' -endpos '. escapeshellarg($endpos) : '') .
                    
    ' -sws 9' .                //lanczos
                    
    ' -speed 99'.            //speed up
                    
    ' -vf 'escapeshellarg('framestep='.$framestep.':''scale='.$videothumbsize['width'].':'.$videothumbsize['height']).
                    
    ' '.escapeshellarg($this->filename).
                    
    ' 2>&1'
    Im Klartext:
    MPlayer.exe -nosound -really-quiet -ss 00:00:03 -vo "jpeg:quality=90:outdir=./test/0" -sws 2 -speed 99 -vf "framestep=5253:scale=200:122" "test.flv" 2>&1
    Die Frames sind gleichverteilt über das Video (mittels der Framestep-Variable).

    Mir fehlt die Erfahrung um zu sagen, ob diese Zeit normal ist.
    Oder liegt es vielleicht daran, dass ich eine nicht-offizielle Windows-Binary von MPlayer verwende?
    Ich habe das ganze ebenfalls mit einer Mov-Datei ausprobiert. Dauert leider ähnlich lange.

  • #2
    Hab das gerade mal getestet für ein 60 minuten video mp4 braucht er bei mir auf nem i7 620M unter linux 4 minuten, 1 Kern unter vollast, scheint also rein cpu-abhängig zu sein. kenn mich mit mplayer allerdings nicht aus, weis also nicht ob man das irgendwie optimieren kann.
    [URL="http://www.robo47.net"]robo47.net[/URL] - Blog, Codeschnipsel und mehr
    | :arrow: [URL="http://www.robo47.net/blog/192-Caching-Libraries-and-Opcode-Caches-in-php-An-Overview"]Caching-Klassen und Opcode Caches in php[/URL] | :arrow: [URL="http://www.robo47.net/components"]Robo47 Components - PHP Library extending Zend Framework[/URL]

    Kommentar


    • #3
      Danke, robo!!!
      Wird schon CPU-abhängig sein. Der Speed-Parameter sollte eigentlich das Video extrem beschleunigen (1 = normale Geschwindigkeit). Der Parameter funktioniert aber nur bedingt. Ein Wert von 100 entspricht wohl nicht hundertfacher Geschwindigkeit.

      Beim verwendeten "Software Scaler Type" (bicubic, lanczos, etc.) konnte ich rein subjektiv keinen Unterschied in der Geschwindigkeit feststellen.

      Es kann noch ein wenig schneller gemacht werden, indem der endpos Parameter verwendet wird. Denn ohne den wird offensichtlich das ganze Video durchlaufen.

      Da muss ich mir wohl irgendwie eine Fortschrittsanzeige überlegen. Wird nicht einfach, denn der Shell-Befehl hat ja keine vernünftige Rückmeldung.
      Ich werde wohl das Outputverzeichnis periodisch auf neue Bilder überprüfen müssen und diese dann ausgeben.

      Kommentar


      • #4
        Hmm, ich frage mich gerade, ob es nicht schneller ist, die Bilder einzeln in einer Schleife zu extrahieren. Werde das wohl einmal ausprobieren müssen.

        EDIT: Oh, hoppla.
        Ein erster Test ergab, dass einzelne Frame-Extraktion etwa 20 mal schneller war. Muss aber erst noch verifizieren, ob da alles mit rechten Dingen zugegangen ist...
        TEST 1: multiple frame extraction
        TIME: 415.5183599

        TEST 2: single frame extraction in a loop
        TIME: 22.4554610252

        Kommentar

        Lädt...
        X