2013-03-07 11 views
6

Ich versuche, die einfachste html5-Video-Player in der Welt zu machen:HTML5 Spur Bildunterschriften nicht angezeigt

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <title>ST Media Player</title> 
    </head> 
    <body> 
     <video id="player" src="http://video-js.zencoder.com/oceans-clip.mp4" controls> 
      <track kind="captions" src="_tracks/test.vtt" default> 
     </video> 
    </body> 
</html> 

Fertig!

Nun, warum erkennt der Player, dass es Untertitel gibt, aber zeigt sie nicht? Ich habe jetzt verschiedene Video- und Untertitel-Dateien ausprobiert.

Antwort

12

Track-Tag funktioniert, wenn Ihr Inhalt auf einem Webserver bereitgestellt wird. Vergessen Sie auch nicht, eine Konfiguration hinzuzufügen, die den MIME-Typ als vtt-Datei festlegt. Hier ist mein Beispiel, das auf IIS funktioniert:

<video> 
    <source src="video.mp4" type="video/mp4" /> 
    <track src="video.en.vtt" kind="subtitles" 
     label="English Subtitles" srclang="en" /> 
</video> 

Für IIS Web.Config Datei:

<configuration> 
    <system.webServer> 
     <staticContent> 
     <remove fileExtension=".vtt" /> 
     <mimeMap fileExtension=".vtt" mimeType="text/vtt" /> 
     </staticContent> 
    </system.webServer> 
</configuration> 

Für Tomcat Server WEB-INF/web.xml Datei:

<web-app> 
    <mime-mapping> 
    <extension>vtt</extension> 
    <mime-type>text/vtt</mime-type> 
    </mime-mapping> 
</web-app> 

Für Apache Server hinzufügen .htaccess Datei in Ihr Web-Verzeichnis, und schreiben Sie diese Zeile, um Untertitel MIME-Typ hinzuzufügen:

AddType text/vtt .vtt 
+0

Wo kann ich die Config auf meiner Web-Server? –

+0

@ThomasTeilmann: Ist dein Webserver IIS? Wenn dies der Fall ist, sollten Sie eine web.config-Datei in den Stammordner einfügen und die config darin einfügen. – Canavar

+0

Was ist mit Apache Server? – bakriawad

1

Stellen Sie sicher, dass Sie Ihre Datei als UTF-8 gespeichert wird, um sicherzustellen, dass Sonderzeichen

+0

und der MIME-Typ sollte charset haben konfigurieren: < "VTT" MimeMap fileextension = mimt = "text/VTT; charset = UTF-8" /> –

0

Ich habe keine Antwort dafür, bin aber zu dem Schluss gekommen, dass es sich um ein Server-Einstellungs-Problem handelt. Die Beschriftungen in IE funktionieren einwandfrei auf IIS, aber nicht auf Nginx-Server, wenn mit IE als Client angezeigt wird.

+1

Da Sie relevant und wahrscheinlich hilfreiche Informationen aber keine Antwort, ich würde vorschlagen, diese Information als Kommentar zu der Frage anstatt einer Antwort zu veröffentlichen. Vielen Dank! –

+1

Entschuldigung. Verwendung von Stack Overlow – pelicanpaul

0

Sie müssen die mode des textTracks Objekt auf „zeigt“:

var video = document.querySelector('YOUR_VIDEO_SELECTOR'); 

video.addEventListener('load', function() { 
    var tracks = video.textTracks[0]; 
    tracks.mode = 'showing'; 
});