Est-il possible d'obtenir les données de streaming RTSP dans le navigateur Web?
Voici quelques-unes de mes conclusions. Veuillez me corriger si je me trompe?
Seul Mac OS et Safari prennent en charge la diffusion en direct RTSP.
La vidéo HTML 5 ne prend pas en charge RTSP.
Je peux utiliser le plugin VLC, mais je ne veux pas l'utiliser.
Possibilité de mélanger ffmpeg et websocket?
Supposons que ma caméra IP est connectée à Ethernet.
Sur la machine cliente:
Question:
Je peux me tromper à différents endroits. Veuillez fournir vos commentaires.
Ici est une entrée de blog, ou un tutoriel si vous voulez, qui réalise quelque chose de très similaire.
Leur configuration légèrement différente, mais voici le résumé:
utilisez ffmeg
pour convertir votre entrée en mpeg1video:
ffmpeg -i rtsp://whatever -f mpeg1video -b 800k -r 30 http://localhost:8082/yourpassword/640/480/
Installer node.js
avec stream-server.js
script de jsmpeg et ws
ws WebSocket package.
Pour afficher le flux, utilisez le stream-example.html
et jsmpg.js
depuis jsmpeg . Modifiez l'URL WebSocket dans stream-example.html
à localhost
et ouvrez-le dans votre navigateur préféré.
Mettre à jour an SO topic suggérer deux autres solutions de travail, avec la balise <video>: avec stream-m Java ou avec ffserver
.
J'ai besoin de montrer un streaming dans différentes plates-formes et navigateurs. Pour ce faire, sans utiliser de plug-ins (pas sûr que cela fonctionne sur les smartphones et les tablettes), utilisez une approche très similaire à la vôtre. Une tâche ffmpeg crontab crée 3 images par seconde et stocke dans un répertoire. En utilisant Jquery, un appel ajax vers un php lit le répertoire et obtient le nom du fichier, pour changer l'image (en changeant seulement l'attribut 'src' de <img>
), toutes les 330 ms. Pour résoudre le problème de stockage, utilisez une autre tâche crontab qui supprime les fichiers avec plus d'une minute. Ce n'est pas du vrai streaming, mais c'est un navigateur croisé, et résout assez bien le problème.
La tâche ffmpeg
ffmpeg -i "rtsp://path/to/cam" -s 320x240 -f image2 -vf fps=fps=3 cache/%04d.jpg
Exemple d'appel ajax
$.ajax({
url: '_read_dir.php',
type: 'POST',
dataType: 'json'
})
.done(function(result) {
$("#img_cam").prop('src',"cache/" + result.img);
});
La tâche de contrôle du stockage
find /var/www/path/to/dir -mmin +1 -exec rm -f {} \;
L'espoir peut vous aider! :)