Comment diffuser une vidéo mjpeg sur un site web

J'ai eu quelques problèmes avec la diffusion d'une vidéo mjpeg sur un site web. L'appareil photo dispose d'une adresse ip privée (il doit rester privé/local), mais doit être visible sur un site web public.

J'ai essayé le code suivant:

HTML

<img src="video.php?ip=IPADDRESS&name=NAME" width="640" height="480" />

PHP (video.php)

<?php
    //... some code to get the camera object
    header('Content-Type: multipart/x-mixed-replace; boundary=myboundary');
    ob_end_flush();
    readfile('http://'.$cam->user.':'.$cam->pwd.'@'.$cam->ip.'/mjpg/video.mjpg');
?>

Qui fonctionne jusqu'à présent. Mais le problème est maintenant, quand j'ai envoyé quelques demandes (camerasteering) via jQuery, on ne peut pas les envoyer jusqu'à ce que je refresh le site ou le fermer. La direction ne fonctionne que lorsque j'écris le fichier directement dans l'image src de la balise. Mais que, bien sûr, le cours d'eau n'est visible sur le serveur web local. Ma question maintenant: Quelle est la meilleure façon de diffuser la vidéo sur un site web public?

Ce qui concerne

BlackBonjour

MODIFIER

Ici le jQuery code:

$('#container').on('click', '.steer', function()
{
    $.post('handle_post.php',
    {
        action: 'move-cam',
        ip: $('#camIP').val(),
        name: $('#camNAME').val(),
        move: $(this).attr('alt')
    });
});

Ce n'est pas le code complet, mais c'est tout pour le steeringfunction.

Mise à jour 17.09

J'ai travaillé sur mon problème derniers jours, mais ne comprends toujours pas une solution. J'ai essayé d'ouvrir une nouvelle fenêtre, ce qui ne la direction. Le problème est que si j'ouvre la fenêtre avec le javascript, je n'ai pas encore de contrôle de la caméra. Quand j'ouvre un autre navigateur et accéder directement à l' "contrôleur", je peux contrôler la caméra. Mais ce n'est pas ce que je veux. Comment puis-je contrôler la caméra avec JS (Ajax)?

Et ensuite, quand j'ai lu le flux jeté php, le serveur et mon pc sont vraiment lents. Comment puis-je régler ce problème?

Je utiliser le Code suivant pour la lecture du flux:

$fp = fsockopen($cam->ip, 80, $errno, $errstr, 30);

if(!$fp)
{
    echo $errstr.' ('.$errno.')<br />'."\n";
}
else
{
    $urlstring = "GET /mjpg/video.mjpg HTTP/1.0\r\nAuthorization: BASIC ".base64_encode($cam->user.':'.$cam->pwd)."\r\n\r\n";

    fputs($fp, $urlstring);

    while($str = trim(fgets($fp, 4096)))
    {
        header($str);
    }

    fpassthru($fp);
    flush();
    fclose($fp);
}

OriginalL'auteur BlackBonjour | 2013-09-13