- désactiver l'authentification de la caméra IP:
Si l'appareil ne dispose pas de cette option sur le panneau d'administration, il suffit d'ajouter un utilisateur sans mot de passe avec un nom d'utilisateur comme « aucun », alors nous pouvons configurer comme ceci
<iframe src="http://none:@mycamera.com/video.mjpg" width="1280" height="768"></iframe>
Sans mot de passe, mon Chrome ne jette plus le nom d'utilisateur/mot de passe. (Testé sur Chrome de Windows et MacOSX & Safari)
- Proxy la sortie sur le serveur de mon propre site web:
Télécharger les framework CORS du mohsen1
Installez le noeud js et exécutez ce serveur sur le même avec le domaine du site Web. Nous devons modifier le fichier index.js comme ci-dessous
var fs = require('fs');
var request = require('request');
var http = require('http');
var https = require('https');
var privateKey = fs.readFileSync('/var/private_key.pem', 'utf8');
var certificate = fs.readFileSync('/var/certificate.crt, 'utf8');
var credentials = {key: privateKey, cert: certificate};
var express = require('express');
var proxy_http_port = 9009
var proxy_https_port = 9443
var app = express();
// your express configuration here
var auth = "";
app.use(function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
next();
});
var t = app.get('/', function (req, res, next) {
var username = "";
var password = "";
if (req.query.auth) {
username = req.query.auth.split(":")[0];
password = req.query.auth.split(":")[1];
auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64');
res.header('Authorization', auth);
} else {
res.send('please specify auth query param');
}
if (req.query.url) {
var options = {
method: 'GET',
url: req.query.url,
headers: {
"Authorization": auth,
//'User-Agent': req.headers['user-agent']
},
encoding: null
};
var r = request(options, function callback(error, response, body) {
if (!error && response.statusCode == 200) {
res.write(body);
delete response.headers['access-control-allow-origin'];
}
}).pipe(res);
} else {
res.send('You have to specify URL query');
}
});
http.globalAgent.maxSockets = 100;
var httpServer = http.createServer(app);
var httpsServer = https.createServer(credentials, app);
httpServer.listen(proxy_http_port);
httpsServer.listen(proxy_https_port);
Encode l'URL du flux vidéo ci-dessous:
http://mycamera.com/video.mjpg
à:
http% 3A% 2F% 2Fmycamera.com% 2Fvideo.MJPG
L'URL du flux vidéo doit être
https://mywebsite.com:9443/?auth=username:password&url=(put above encoded video URL here)
L'avantage de cette approche est de contourner la plupart des problèmes autour et se débarrasser des erreurs (CORS, HTTPS) parce que mon site demandera à son propre serveur
L'inconvénient est que la vidéo serait chercher deux fois, cela a causé beaucoup de retard.