Video-Thumbnails für WD TV Live erstellen

Januar 17, 2010

Mein neues Spielzeug, der WD TV Live, kann Thumbnails (Vorschau-Bilder) zu einer Video-Datei anzeigen, wenn im selben Ordner eine jpg-Datei (am besten mit 120×180 Pixeln) mit dem selben Namen wie das Video liegt. Zur Datei video.mkv wird also z.B. video.jpg angezeigt.

Ich hab mir also ein Shell-Script besorgt, dass aus den Videos automatisch die Bilder generiert. Ich hab mich da für Sekunde 45 entschieden, weil bei einigen Filmen ganz am Anfang ja erstmal nutzlose Trailer der beteiligten Unternehmen laufen… Weil es vor a120llem bei 720p- oder 1080p-Videos ne Weile dauern kann, bis da ein einzelnes Bild generiert ist, hab ich dann (weil ich nicht so lang warten wollte ;) heute ein Shell-Script geschrieben, das vier Dateien auf einmal abarbeitet (ich hab nen Quad-Core). Das Script sollte man auch ohne allzu großen Aufwand anpassen können, dass es andere Aufgaben mit mehr oder weniger gleichzeitigen Jobs parallel abarbeitet (bald vielleicht auch meine Log-Files…).

Vorraussetzungen: ffmpeg, imagemagick

#!/bin/bash
#set -x

# file types:
TYPES='.+\.(mkv|avi|mpg|mpeg|mov|wmv|mp4|flv)$'
# make thumbnail at second ## of the movie
OFFSET=45
# number of parallel processes
WORKERS=4

NL='
'

queue_put() {
 queue_name=$1
 value=$2
 if [ -n "${!queue_name}" ]; then
 queue_val="${!queue_name}"
 eval "$queue_name=\"$queue_val$NL$value\""
 #read $queue_name <<< "$queue_val$NL$value"
 else
 read $queue_name <<< "$value"
 fi
}
queue_pop() {
 queue_name=$1
 var=$2

 queue="${!queue_name}"
 if [ -n "$queue" ]; then
 index=$(expr index "$queue" "$NL")

 read $var <<< "${queue%%$NL*}"
 if [ $index -eq 0 ]; then
 read $queue_name <<< ''
 else
 eval "$queue_name=\"${queue#*$NL}\""
#        read $queue_name <<< "${queue#*$NL}"
 fi
 fi
}

echo "searching for missing thumbnails..."

allfiles=$(find . -regextype posix-extended -iregex "$TYPES" -exec /bin/bash -c "file=\"{}\"; exit \$(test ! -f \"\${file%.*}.jpg\")" \; -printf '%p\n')

dir=$(mktemp -d)

work() {
    echo "worker $workerid is starting up..."
    sleep .25

    pipe="$dir/job$workerid"
    while [ -p "$pipe" ]; do
        echo READY > "$pipe"
        read file < "$pipe"
        if [ "$file" = "DONE" ]; then
            echo "worker $workerid is shutting down."
            exit 0
        fi

        thumb=${file%.*}.jpg

        echo
        echo
        echo
        echo "worker $workerid processing $file..."
        ffmpeg -itsoffset -$OFFSET -i "$file" -vcodec mjpeg -vframes 1 -an -f rawvideo -y -v -1 "$thumb"
        mogrify -resize 120x180 "$thumb"
    done
    return 0
}

masterpid=$$

workerid=0
workers=( )
while [ $workerid -lt $WORKERS ]; do
    mkfifo "$dir/job$workerid"
    work &
    workers[$workerid]=$!

    let workerid++
done

sleep 3
while [ -n "$allfiles" ]; do
    workerid=0
    while [ -n "$allfiles" -a $workerid -lt $WORKERS ]; do
        pipe="$dir/job$workerid"
        if [ -p $pipe ]; then
            response=$(cat < $pipe)
             if [ "$response" = "READY" ]; then
                 queue_pop allfiles file
                 echo $file > "$pipe"
            fi
        fi
        let workerid++
    done

    sleep .25
done

workerid=0
while [ $workerid -lt $WORKERS ]; do
    cat "$dir/job$workerid" > /dev/null
    echo DONE > "$dir/job$workerid"
    wait ${workers[$workerid]}

    let workerid++
done

rm -rf "$dir"

Übrigens: Ordnern kann man mit einem folder.jpg ein Bild zuordnen.

0

Firefox in mehreren Prozessen: erste Ergebnisse

Juni 22, 2009

hier gibt es ein Video eines Gecko-Browsers, der in mehrere Prozesse aufgeteilt ist. Das alles ist noch in einer sehr frühen Phase und es wird noch eine ganze Weile bis zum Release einer Firefox-Version, die für Tabs und Plugins extra Prozesse verwendet, dauern. Ein erster Schritt ist aber getan.

0

Dear Lazy Web

Februar 20, 2009

ich brauche ein Icon für den Button zum Ändern des Schlüsselworts in Organize Search Engines. Bisher habe ich dazu das Eigenschaften-Icon missbraucht, der wird jetzt aber für die Eigenschaften gebraucht.

Organize Search Engines - mit fehlendem Icon für den Schlüsselwort-Button

Mal schauen, ob das mit dem Lazy Web auch hier funktioniert…

0

Drag & Drop im Suchmaschinen-Auswahlmenü

Februar 15, 2009

Ein weiteres altes SEO-Feature, das bald Einzug in Organize Search Engines erhält: das Umsortieren der Suchmaschinen direkt im Auswahlmenü per Drag & Drop.

Drag & Drop im Auswahlmenü der Suchmaschine

Dass das letzte noch fehlende Feature (das mir einfällt), das Kontextmenü der Suchmaschinen im Drop-Down, noch kommt, bezweifle ich. Der Engine-Manager ist imho sehr viel bequemer, als es so ein je Kontextmenü sein könnte.
Update 17.02.: Der Backport vom 3.1-Branch auf Firefox 3 hat erstaunlicherweise auch eine kleine Änderung gebraucht :-). Damit ist Version 1.5 fast fertig.

0

Symbolleisten anpassen

Februar 10, 2009

Ich habe endlich die Lösung gefunden (und eingebaut), das ewige Problem zu lösen, dass nach dem Anpassen der Toolbars nichts mehr funktioniert: die Methoden der Searchbar nicht einfach durch eigene ersetzen, sondern ein eigenes XBL-Binding schreiben, dass das Standard-Binding erweitert (extend).

Damit löst sich das Problem mit dem Anpassen einfach in Luft auf, weil immer wenn die Suchleiste neu initialisiert wird, mein Code genauso neu aufgerufen wird. Das Binding hat mir dann außerdem auch erlaubt, einigen Kompatibilitäts-Code für Thinger (mehrere Suchleisten, leider nur bis Fx 2) rauszuschmeißen, weil mein Code ganz von selbst mitgeladen wird.

So im Nachhinein ist das sowieso die viel sauberere Lösung, aber das hat damals halt mit einer einzigen ersetzten Methode angefangen und ist dann immer mehr geworden…

(Nein, ich erwarte nicht, dass das ein Leser hier versteht, oder dass es ihn interessiert. Aber ich wollte es mal loswerden.)

2

Suchmaschinen-Eigenschaften

Februar 1, 2009

Engine Properties

Search-Plugins ohne Gefummel in den xml-Dateien bearbeiten.

1

Facharbeit

Januar 31, 2009

Da ich weiß, dass darauf mindestens eine Person gewartet hat, und das schon mehr ist als bei den meisten der (viel zu seltenen) Postings hier, kommt hier jetzt also ohne lange Einleitung meine Facharbeit…

Thema: Numerische Verfahren zur Nullstellenberechnung (mit Computerereinsatz)

Bitte auf keine gefundene Fehler hinweisen, sie ist eh schon abgegeben und so muss ich mir (zumindest bis zur mündlichen Prüfung) keinen unnötigen Kopf drum machen.

PS: Die Quelltexte stehen aus alter Tradition MPL/GPL/LGPL lizenziert. Die Arbeit selbst unter der Creative Commons Namensnennung-Weitergabe unter gleichen Bedingungen 3.0 Deutschland Lizenz.

0

Wohooo!

Januar 7, 2009

0

Seiten, bei denen Adblock Plus versagt

Oktober 12, 2008

Ich bräuchte ein paar Links zu (legalen!) Seiten, auf denen Adblock Plus nichts ausrichten kann, weil Popups z.B. erst bei einem Klick geöffnet werden und das entsprechende Script direkt in der Seite steht, oder ein (nicht nachgeladenes) Anti-Adblock-Script in die Seite eingebunden ist. (Oder aus sonst einem anderen Grund, außer dass die Adresse eines Skripts/Bildes/Objekts zu unregelmäßig ist.)

(Ja, es geht um das hier.)

8

Kommentare gesperrt

Juli 6, 2008

ich bin die nächste Woche nicht zu Hause. Weil hier ständig neuer Kommentar-Spam eintrudelt, sind Kommentare (und Track-/Pingbacks) bis ich wieder da bin gesperrt.

System of a Down – War?

2