Le code indiqué ci-dessous est pour la diffusion vidéo. C'est bon avec IE9 et Firefox, mais cela ne convient pas à Chrome et à Mac Safari.
4 Réponses :
Google Chrome ne prend pas en charge H.264 (inclut MP4) afin que vous ayez besoin d'utiliser final.ogg avec Google Chrome. tandis que pour Safari, vous devez modifier cette ligne
browser.indexOf("CoreMedia") != -1
Honnêtement, cette approche n'est absolument pas correcte.
Vous reniflez l'agent utilisateur du côté du serveur et en fonction du travail commercial sur celui-ci. C'est dans tous les cas une mauvaise idée. Si tout ce que vous voulez, c'est spécifier un fichier différent en fonction de l'agent utilisateur, plutôt le faire au côté HTML, avec l'aide de JavaScript ou de CSS. Les deux langues côté client peuvent identifier le navigateur réel em> sans la nécessité de renifler la chaîne d'agent utilisateur (qui est à savoir spoofable). P> LI>
Vous ne répondez pas correctement sur Ceci devrait être possible sans renifler l'agent utilisateur et répondant correctement à la plage code> code> par Cependant, beaucoup mieux consiste à déléguer le travail au servlet par défaut du servletContainer. Si c'est par exemple Tomcat, tout ce que vous avez à faire est d'ajouter la ligne suivante à de cette façon Les fichiers multimédia souhaités sont disponibles sur http: // localhost: 8080 / média / final.ogg et http: // localhost: 8080 / média / final.mp4 sans avoir besoin d'accomplir un servlet. p> p> Plage Code> Demandes. Vous envoyez le fichier complet à la place de la plage
demandée code>. Firefox et IE n'utilisent pas de demandes de plage et c'est pourquoi il "fonctionne". Chrome et safari utilisent des demandes de gamme. P> Li>
ul>
RandomAccessfile code> au lieu de
fichier code> et < Code> octet [] code>. Ce n'est que beaucoup de code à prendre tout Spécification HTTP en tenant compte, alors voici juste un LIEN où vous pouvez trouver un exemple concret d'un tel servlet: CV et mise en cache de fichiers A>. P>
/conf/server.xml code>: p>
Merci, cela me convient très utile "Westerservlet Soutenir le CV et la mise en cache".
Pour l'approche de contexte Tomcat: Existe-t-il un moyen d'implémenter un filtre de demande aux fichiers multimédia?
Cela semble être plus un problème de support au format.
Vous pouvez essayer le format OGG. Le code HTML5 est p>
String diskfilename = "final.mp4"; response.setHeader("Content-Disposition", "attachment; filename=\"" + diskfilename + "\"" ); Just comment these two lines and then run on chrome your video will play.
Quelques notes: ce que vous faites n'est pas "streaming", vous servez simplement les fichiers sur http comme tout autre; Manipulation de différents navigateurs au niveau du serveur est une très mauvaise idée (et en général, cela devrait être fait le moins possible); Vous ne devez séparer que les 2-3 lignes qui diffèrent pour chaque cas au lieu de reproduire tout le code.