Table des matières

This article and memo aims to show how to serve your local cams with protection

Utilisation : accès à mes cams depuis l'extérieur

Activation

Les flux de mes cams sont disponibles si on les active ; on peut les activer pour un durée limitée.
Pour ce faire, avec un navigateur web, entrer l'url suivante en remplacant <aValidCamName> par la caméra voulue.
Remarque : Une authentification basic sera demandée.

Si l'appel a abouti et l'activation se passe bien, ou que la caméra est déjà activée, une réponse json à cet appel indiquera que vous pouvez accéder à la cam.

Accès au flux activé

Create vlc streaming service

https://medium.com/@petehouston/protect-media-stream-with-http-basic-authentication-11a753725f05 https://wiki.videolan.org/Documentation:Streaming_HowTo/VLM

Ces trucs fonctionne avec la version 3 de VLC

Capturer le flux rtsp et le servir comme un flux avi accessible

cvlc -v --sout "#transcode{acodec=mp4a,ab=128,channels=2,samplerate=44100}:std{access=http,mux=ts,dst=:8084/streamSalon}" rtsp://admin:admin@192.168.1.84:554/11

Capturer le flux rtsp et le servir comme un flux avi accessible, mais uniquement depuis localhost, i.e la machine qui capture

Pour ça on doit ajouter localhost dans la dst :

cvlc -v --sout "#transcode{acodec=mp4a,ab=128,channels=2,samplerate=44100}:std{access=http,mux=ts,dst=localhost:8084/streamSalon}" rtsp://admin:admin@192.168.1.84:554/11

Capture le flux rtsp et le sert comme un flux avi protégé

cvlc -v --sout "#transcode{acodec=mp4a,ab=128,channels=2,samplerate=44100}:std{access=http{user=xavier,pwd=free,mime=multipart/x-mixed-replace;boundary=-7b3cc56e5f51db803f790dad720ed50a},mux=ts,dst=:8084/streamChambre1}" rtsp://admin:admin@192.168.1.40:554/12

Ca on ne va pas s'en servir, vu qu'on veut utiliser une base de donnée d'utilisateurs (via apache et htpassword)

Update apache2 conf to create a stream proxy

<VirtualHost *:80>
	...	
	DocumentRoot /var/www
	...
	
	<Location /cams> #the / has to be there, otherwise Apache startup fails
			
		AuthType Basic
		AuthName "Restricted Files"		
		AuthBasicProvider file 										# (this line is optional)		
		AuthUserFile "/home/pi/apache.access-control-passwords" 	# you can change users and passwords with htpasswd utility
																	# example : # htpasswd -c /home/pi/apache.access-control-passwords xavier
		Require valid-user											# or Require user xavier
			
		#Satisfy Any 												# (or all, if IPs specified and require IP + pass)
																	# any means neither ip nor pass            
					 
		ProxyPass "http://localhost:8084/streamSalon"				# redirect stream to vlc (that is listening to 8084 port)
	</Location>
		
	<Directory />
		...
	</Directory>
	...
</VirtualHost>
apachectl -t

Restart apache2 and test it

sudo service apache2 restart