Ahhhhhh! Ich fahre bald nach Redmond und werfe da Steine in die Fenster!
Man könnte ja meinen, das wäre alles so in Ordnung. Ist es im Firefox auch. Und im Internet Explorer? “Fehler auf der Seite – Das Objekt unterstützt diese Eigenschaft oder Methode nicht“. Was das im Klartext bedeutet? Der IE möchte gerne beim Onclick-Ereignis anstatt auf die Funktion “previewTemplate()”, lieber auf den iframe mit dem Namen “previewTemplate” zugreifen und scheitert – natürlich. Sowas dämliches?!
Lösung: Anderen Namen für Funktion oder Objekt (in diesem Fall Iframe) vergeben. AHHH!
Hmpf! Schon wieder so ein dusseliges Problem, das mich aufgehalten hat. Ich weiß auch gar nicht, ob es daran liegt, dass der Firefox so nachsichtig ist oder der Internet Explorer (mal wieder) zu dämlich.
Folgendes sei gegeben:
Nun möchte ich die Werte der Optionen bei jeder Änderung ausgeben lassen. Ich erweitere also die Selectbox um das folgende:
Das funktioniert im Firefox auch ganz prima! Im Internet Explorer geht es leider nicht. Skriptfehler – Abbruch. Angeblich ein ungültiges Element. Na gut… und woran liegt es?! Daran, dass die Option-Felder keinen eigenen Value-Wert haben! %$&§”"!&;”$$&%!!%&%$§!!!!!
Um die ffmpeg-Geschichte jetzt zu vervollständigen, präsentiere ich hier noch das entsprechende PHP-Modul ffmpeg-php.
Das Modul erweitert PHP um einige sehr schöne Funktionen, z.B. um aus Videos Screenshots oder gleich animierte GIFs zu erzeugen. Was benötigt man? ffmpeg sowie PHP4 oder PHP5 sind “natürlich” Voraussetzung. Für die Bildextraktion wird noch GD-Lib benötigt. Wenn man diese Voraussetzungen erfüllt, kann es eigentlich schon losgehen:
How to install ffmpeg-php4 on Debian 4.0 (Etch)
1. Downloading the archive via Subversion
svn co https://ffmpeg-php.svn.sourceforge.net/svnroot/ffmpeg-php ffmpeg-php
2. Now change to the directory and execute “phpize”. Maybe you do not have installed it and then you can reinstall it with apt.
apt-get install php4-dev
cd ffmpeg-php
phpize
3. After a short period the system will throw you back to prompt. No it’s time to configure and build the extension.
./configure && make && make install
4. Checking for existing ini file! In some cases installation will not create a PHP-extension ini-file by itself, so you have to do the work. The directory where to find it depends on your configuration (PHP and Apache versions). In my case it’s “/etc/php4/apache2/conf.d/”
There you have to create a file named “ffmpeg.ini” an fill it with:
# configuration for php FFMPEG module
extension=ffmpeg.so
5. After all just restart apache with
/etc/init.d/apache2 restart
Try it by checking your “phpinfo()”-output or by testing a function directly, i.e.:
Nachdem ich ja jetzt schon so von den Flashvideos geschwärmt habe, möchte ich gerne präsentieren, was man alles machen muss, um mit ffmpeg solche FLV-Dateien zu erzeuge. Der Weg war hart und steinig aber ich habe es geschafft! ;-)
Ein kurzer Ablauf:
ffmpeg über Debiansapt installiert. Das war ja einfach! Flash-Video erzeugt – klappt ja prima. Aber halt!! Kein Ton!! :-(
Nachforschungen…
lame-mp3 fehlt! Na gut, schnell über apt installieren. … Gibt es nicht! Warum? Weil es lizenzrechtlich wohl nicht so einfach ist und deswegen stellt es Debian nicht zur Verfügung. Na gut, irgendwo wird es schon entsprechende Debian-Pakete geben…
Heureka! debian-unofficial.org bietet fertige Pakete an! lame installieren, testen – kein Ton. Warum? ffmpeg muss entsprechend neu kompiliert werden. Von Hand! Es gibt ja sicherlich Anleitungen im Internet. Gibt es auch, aber leider alle nur für ältere ffmepg-Versionen oder nicht für Debian 4.0 (Etch). Nach einigem Rumgefrickel: Ich habe Feuer gemacht! Ich habe es kompiliert und installiert! Die Konvertierung läuft nun auch mit Ton! Fein, fein!
Dann mal eben die verschiedensten Dateiformate getestet:
AVI (XVid, DivX) – läuft
DIVX – läuft
MPEG – läuft
WMV, WMV8, WMV9 – laufen
MOV – läuft
3GP – läuft nicht!
Mist! Dabei ist 3GP durch die Handy ja gerade ein ziemlich wichtiges Format! ffmpeg unterstützt prinzipiell 3GP-Dateien, allerdings nicht mit dem neueren Audio-Codec SAMR.
“Ich brauche Flashvideos!”, ging mir so durch den Kopf, als ich über die Zukunft meiner Webgalerie nachgedacht habe. Meiner Meinung nach ist das “Flash Video“-Format eine der grandiostesten Erfindungen der letzten Jahre. Hat man sich früher noch mit “hakeligen” Formaten wie QuickTime, Real oder gar Microsofts “Windows Media Video” rumgeschlagen, für das der Besucher immer aufwändige und vor allem “nervige” Software installieren muss, so braucht man für die schönen Flashvideos nur das Adobe* Flash-Plugin – und das ist ja bei fast jedem installiert. Wenn ich dann noch zurückdenke, wie der Rechner immer ins Schwitzen kam, wenn der Media-/Real- bzw. QuickTime-Player angeschmissen werden musste…
Ab CSS3 wird es (endlich!) eine einheitliche Definition für Transparenz bei Objekten geben. Bis dahin gilt leider, wie viel zu oft: “Verschiedene Browser, verschiedene Implementierungen.”
Los geht’s:
CSS
div {
opacity: 0.5 // CSS3
-moz-opacity: 0.5 // Mozilla
khtml-opacity: 0.5
filter: alpha(opacity=50); // Internet Explorer
}
Wenn man mal wieder alte Backups o.ä. löschen will:
find /pfad/ -mtime +30 -exec rm {} \;
Erläuterung:
mtime: Datum in Tagen wann die Datei zum letzten mal geändert (modifiziert) wurde
exec rm: Befehl, der mit den gefunden Dateien benutzt werden soll. Ein “ls -la” anstatt einem “rm” listet einem erst einmal die Dateien auf, die er findet. Gibt Kontrollfreaks wie mir immer ein wenig Sicherheit, bevor ich sie lösche.
In JavaScript gibt es ja einige wunderbare Funktionen bzw. Funktionalitäten. Besonders verpönt ist es ja das “.innerHTML” um Inhalte einzufügen. Es ist schnell aber irgendwie unsauber. Von daher macht man das über das “Einhängen” von richtigen (X)HTML-Nodes.
Beispiel:
var div = document.getElementById("mein_div_wo_ich_was_reinhaengen_will");
var table = document.createElement("table");
table.setAttribute("class", "meine_bunte_css_klasse");
div.appendChild(table);
Nachvollziehbar? Gut! Funktioniert aber nicht im Internet Explorer! Warum? Die Antwort mein Freund, weiß ganz allein der Wind.
Da “document.all” nur unter dem IE verfügbar ist, wird hier “spontan entschieden” welches Attribut gesetzt wird.
Update:
Wie man in den Kommentaren lesen kann, ist document.all NICHT nur im Internet Explorer verfügbar. Dort steht ebenfalls ein “besserer” Lösungsansatz. Vielen Dank noch mal für den Hinweis.