Multimediakurs Leinfelder: Modul 11 - Anlagen: Verhinderung von Quicktime-Hijacking |
(© copyright) Letzte Änderungen: |
Diese Anlage ergänzt die Quicktime-Module im Kurs sowie die Anlage 8 (mehr zu Quicktime)
Viele Quicktime-Inhalte können wirklich nur durch das entsprechende Quicktime-Plugin korrekt dargestellt werden. Leider geben aber auch manch andere Plugins an, dass sie Quicktime-Inhalte darstellen könnten. Bei der Installation entsprechender Plugins (z.B. frühere Versionen des Microsoft Media Players) wird man deshalb manchmal gefragt, ob das Plugin alle Multimediainhalte darstellen soll (manchmal wird man auch nicht gefragt und es passiert einfach). Wir als Webautoren wissen nicht, ob die Nutzer derartige Falscheinstellungen zugelassen haben. Ein Quicktime-Inhalt mit der Endung .mov wird dann ggf. von einem falschen Plugin umgesetzt und der Benutzer ärgert sich über Ihre Website, weil der Inhalt unrichtig oder gar nicht dargestellt wird. Derartiges plugin-hijacking war früher stärker ausgeprägt, Verschachtelung mit dem object tag und dem korrekten classid-Parameter hilft zu einem guten Teil dagegen (siehe Anlage 8:Quicktime). Werden jedoch auf Windows-Welten Versionen des Windows Media Players vor Version 7 des Players verwendet und die Quicktime-Inhalte basieren auf Quicktime < Vers. 5, kann es nach wie vor Probleme geben.
Mime- bzw. Plugin-Hijacking für Quicktime-Inhalte kann folgendermaßen verhindert werden:
Alternative 1: Nehmen wir an, Sie wollen den Film test.mov mit Quicktime darstellen und hijacking verhindern. Normalerweise würden Sie folgendermaßen vorgehen:
<embed src="test.mov" height="256" width=320">
Schreiben Sie stattdessen folgendermaßen:
<embed qtsrc="test.mov" height="256" width=320" src=UNeedQT5.pntg" type=image/x-macpaint" pluginspace="http://www.apple.com/quicktime/download/">
Was passiert da? Der Mediaplayer oder andere verstehen die qtsrc-Anweisung nicht. Sie funktioniert erst ab Quicktime 4 und kann nur vom Quicktime-Plugin oder Quicktime-Player umgesetzt werden. Das Bild UNeedQT5 wird geladen, falls nur Quicktime 3 vorliegt. Es ist vom Typ macpaint, welches ebenfalls nur von Quicktime dargestellt werden kann. Damit bekommt der Nutzer einen Hinweis, dass er das Plugin benötigt. Hat er es nicht, wird er durch pluginspace direkt auf die korrekte Download-Seite umgeleitet.
Wichtig: der Mime-Typ: image/x-macpaint muss im Webserver definiert sein. Für einen Apache-Server sollten Sie z.B. checken, ob folgende mime-Typen für Quicktime-Inhalte vorhanden sind (im File srm.conf (liegt auf <apache_root>/httpd/conf).
AddType video/quicktime.mov
AddType image/x-macpaint pntg
Add Type image/x-quicktime qti qtif
Add Type application/x-quicktimeplayer qtl
Dies brauchen Sie, falls entsprechende Dateitypen in Ihrer Website verwendet werden. Haben Sie keinen Zugang zum Webserver, fragen Sie bei Ihrem Systemadministrator nach, ob alles so konfiguriert ist. Zum Test können Sie sehen, ob die nachfolgenden beiden Dateien angezeigt werden. Bei uns funktioniert es, wie Sie sehen: Sie können die Dateien herunterladen und selbst verwenden (sie sind open Sourceware von Apple), pntg oder qtif-Files können Sie jedoch auch mit dem Picture Viewer von Apple selbst erstellen. Einfach ein Bild (z.B. gif) öffnen und unter diesem Format abspeichern. pntg (macpaint image) kann ab Quicktime 3, qti bzw. qtif (quicktime image) ab Quicktime 4 angezeigt werden.
Um dieses pntg-Bild auf Ihrer Festplatte zu sichern, klicken Sie mit der rechten Maustaste (bzw. control-click beim Mac) auf untenstehenden Link und sichern ihn als Quicktime-Film |
Um dieses qtif-Bild auf Ihrer Festplatte zu sichern, klicken Sie mit der rechten Maustaste (bzw. control-click beim Mac) auf untenstehenden Link und sichern ihn als Quicktime-Film |
2. Alternative für die Verhinderung von Hijacking (die ich bevorzuge)
Verwenden Sie:
<embed src="UNeedQT5.qtif" type="image/x-quicktime" height="240 width="320" href="test.mov" target="myself" autohref="true" pluginspace="http://www.apple.com/quicktime/download/>
Damit läuft der Film automatisch ab, aber immer nur mit Quicktime-Plugin (mindestens version 4, da sowohl das qtif-File als auch die href Attribute dies benötigen, ansonsten geht es zur pluginspace-Seite).
Man könnte den Film auch im Quicktime-Player abspielen lassen, dann würde der Code so aussehen:
<embed src="UNeedQT5.qtif" type="image/x-quicktime" height="240 width="320" href="test.mov" target="quicktimeplayer" autohref="true">
Wenn man das autohref-Attribut auf "false" setzt oder ganz weglässt, wird das qtif-Bild angezeigt. Erst wenn man darauf klickt, startet der Film.
Wichtig: falls man relative Links zu dem qtif-File sowie dem href-File verwendet, muss ein relativer Pfad zum unter href angegebene Film von der Position des qtif-Files aus gehen (nicht etwa vom Dokument, in welches das Ganze eingebettet ist.
Beispiel:
Das html-Dokument mit dem embed-Tag liegt in einem Ordner, der die Unterordner "platzhalter" sowie "movies" enthält. UNeedQT5.qtif liegt in "platzhalter", test.mov in "movies". Der Link zum test.mov ist also nun nicht href=movies/test.mov, sondern, da relativ zu UNeedQT5.qtif eben href="../movies/test.mov", also insgesamt:
<embed src="platzhalter/UNeedQT5.qtif" type="image/x-quicktime" height="240 width="320" href="../movies/test.mov" target="quicktimeplayer" autohref="true">
Nachfolgend zwei umgesetzte Beispiele. Das anzuklickende Bild hat einen entsprechenden Inhalt (das UNeedQT5.qtif eignet sich hier nicht). Ich habe es in einem Grafikprogramm erstellt, als .gif abgespeichert, dann in Picture Viewer geöffnet und als quicktime-Bild exportiert.
Klick auf das linke Bild startet den Film an derselben Stelle (target="myself"), Klick auf das rechte Bild startet den Film im Quicktime-Player (target="quicktimeplayer")
Code für das rechte Bild:
<embed src="clickme.qtif" height="216" width="200" href="../8_block/beispiele/quicktime/velocitween.mov" target="quicktimeplayer" autoplay="true" controller="false" cache="true" type="image/x-quicktime">
Autoplay="true" bedingt, dass der Film bei Aufruf wirklich gleich abgespielt wird. Controller="false" verhindert, dass das qtif-Platzhalterbild mit einem (unnötigen und verwirrenden) Controller versehen wird; cache="true" erleichtert ggf. das zweite Abspielen, falls es beim ersten Mal ruckelt (der quicktime Film ist als konstant loopender Film abgespeichert).
Nun wird Ihnen kein Fremdplugin jemals mehr Ihre Quicktime-Filme entführen!
Tipp: Zum Erstellen des korrekten Codes können Sie auch hierfür die Freeware Pageot (für Mac) verwenden (siehe Anlage 8)