iPhone

Januar 28, 2010

0

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

Organize Search Engines 1.5 Release Candidate 2

Juni 14, 2009

Install Organize Search Engines 1.5rc2

Changes since RC 1:

  • compatible with Firefox 3.5
  • cool new tango icons
  • “Encoding” is added to engine properties
  • simplified/slightly faster XPCOM registration for the component (using XPCOMUtils.jsm)
  • fix: “add more engines” now also works when the engine manage is opened from the add-ons window
  • fix: dropping text over a search engines searches with that engine instead of the currently selected one
  • fix: “Open All in Tabs” feature works for folders with an engine without an icon
  • fix: when adding an engine, a folder can be selected again
  • auto context support is updated to latest version
  • removed TabmixPlus hacks – TMP now supports OSE natively
  • fixed minor SearchWP incompatibility

18

Organize Search Engines 1.5 Release Candidate 1

März 10, 2009

Organize Search Engines 1.5 RC 1

Changes:

  • engine properties allow changing nearly anything about an engine
  • drag & drop support for the engine selection popup
  • updated add-on support
  • customize toolbar not breaking the engine selection popup
  • Fx 3.5 beta supported/dropped Fx 2 support
  • dropped Second Search support (it now just has a normal flat menu)
  • “open in tabs” works with tab mix plus (for now)

4

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