Existe-t-il un moyen léger, gratuit et fiable d'afficher MJPEG dans un environnement multi-navigateur? J'essaie d'afficher un flux MJPEG à partir d'une caméra IP Axis 212 sur un site que je développe, et j'ai trouvé que c'était assez fiable dans les versions actuelles de Firefox. Cependant, après quelques tests, j'ai constaté que IE, Opera et Chrome ont tous des degrés divers de difficulté à le faire (pas d'accès Mac, donc je suis Internet Explorer ne prend pas en charge MJPEG et ne fonctionne pas du tout. Opera prend littéralement 10 à 15 secondes pour afficher quoi que ce soit après l'envoi du GET initial. Chrome fonctionne parfaitement jusqu'à ce que le <div>
qui contient le <img>
la balise est masquée, puis affichée à nouveau.
Pour référence, j'utilise un <img>
tag pour afficher le flux comme suit:
<img src="http://my.ip.addr/axis-cgi/mjpg/video.cgi/?resolution=352x240" alt="real-time video feed" />
J'ai envisagé d'utiliser un serveur de rediffusion pour collecter le flux MJPEG et le transcoder à la volée, mais cette solution semble trop laide. Y a-t-il de meilleures suggestions là-bas?
Voici une Java que vous pouvez utiliser pour n'importe quel navigateur (ou simplement ceux qui ne prennent pas en charge MJPEG): http://www.charliemouse.com/ code/cambozola /
En ce qui concerne les autres bogues avec MJPEG, j'ai trouvé que vous devriez définir l'attribut 'src' de la balise 'img' à quelque chose en plus du MJPEG avant d'essayer de supprimer la balise 'img'. Exemple:
<img src="#" />
Si vous ne le faites pas, Firefox continuera de télécharger le flux MJPEG même si ce n'est pas le cas.
Je viens de proposer une solution il y a quelques mois. Il est multiplateforme et n'a pas besoin de plugins tiers tels que Flash ou Java.
Fondamentalement, c'est un proxy node.js qui analyse les limites m-jpeg et fournit des images dans un intervalle défini.
Forkez-le à https://github.com/rodowi/Paparazzo.js